Pgsql Create Readonly Account

建议点击 查看原文 查看最新内容。

原文链接: https://typonotes.com/posts/2023/10/25/pgsql-create-readonly-account/

授权 schema 只读权限

  1. 登陆到数据库
1
$ psql -u root -d dbname ;
  1. 切换到对应数据库
1
sql> \c dbname;
  1. 创建用户并授权
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
-- 创建用户
CREATE USER <USER_RO> WITH PASSWORD '<PASS_FOR_USER_RO>'; 

-- 授权 public schema 可以不用。
-- 授权非 public schema 需要保留。
GRANT USAGE ON SCHEMA <SCHEMA_NAME> TO <USER_RO>;

-- 授权制度权限
GRANT SELECT ON ALL TABLES IN SCHEMA <SCHEMA_NAME> TO <USER_RO>;

--授予将来新表读取权限
ALTER DEFAULT PRIVILEGES IN SCHEMA  <SCHEMA_NAME>  GRANT SELECT ON TABLES TO <USER_RO>;

授权 Public 只读权限

如果要授权 <SCHEMA_NAME> 是 public

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
CREATE USER USER_RO WITH PASSWORD 'PASS_FOR_USER_RO'; 

-- 授权 public schema 可以不用。
-- 授权非 public schema 需要保留。
-- GRANT USAGE ON SCHEMA public TO USER_RO;

GRANT SELECT ON ALL TABLES IN SCHEMA public TO USER_RO;

--授予将来新表读取权限
ALTER DEFAULT PRIVILEGES IN SCHEMA  public  GRANT SELECT ON TABLES TO USER_RO;

数据库结构

大部分数据库的结构如下

instance -> db -> schema -> table -> column

但是, 在 MySQL 中, db 和 schema 在逻辑上是一起的, 所以基本都是 db.table 的形式。