表现
默认配置下,新建普通用户并授权某数据库,登录后可自由切换到其他库进行读写
复现
创建用户
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;
PostgreSQL 权限踩坑小记
点赞
收藏