PostgreSQL 权限踩坑小记

原创
08/31 14:43
阅读数 21
  • 表现

    默认配置下,新建普通用户并授权某数据库,登录后可自由切换到其他库进行读写

  • 复现

    • 创建用户

      create role test with login password 'test' noinherit;
      create database test owner test;
      
    • pb_hba

      host all all 0.0.0.0/0 md5;
      local all all md5;
      
    • 登录&切换

      psql -U test -d test
      
      test#= \c 其他数据库
      其他数据库#= ??
      
  • 解决

    PostgreSQL的设计哲学是依靠pg_hba.conf来进行集中控制,但是对于实时的线上业务修改pg_hba后重启服务有点不太现实

    其实把每个库的connect权限收回即可(connect权限默认每个用户都有)

    REVOKE CONNECT ON DATABASE <database> FROM PUBLIC;
    -- 或者
    REVOKE ALL PRIVILEGES ON DATABASE <database> FROM PUBLIC;
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部