CREATE USER <role_name> PASSWORD '<role_password>';赋予权限
赋予database所有权限
GRANT ALL ON DATABASE <db_name> TO <role_name>;
赋予只读权限 (不能再db level直接赋予SELECT权限)
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <role_name>;查看权限
SELECT * FROM information_schema.role_table_grants;
补充:PostgreSql角色、用户创建
1、数据库角色数据库角色与 *** 作系统用户的观念完全不同,其可以方便的维护数据库,但不是必须的。
创建数据库角色
CREATE ROLE name;
删除存在的角色
DROP ROLE name;
创建和删除用户
CREATE USER name; dropuser name;
检查存在的数据库角色
SELECT rolname FROM pg_roles;
\du #用这个命令也可以查看
数据库默认用户
数据库在安装完成后会在 *** 作系统以及数据库中都建立一个默认的用户postgres,这个角色是“超级用户”,想使用数据库的更多功能,必须先用这个用户连接数据库。
数据库连接命令
psql -U name;2、数据库角色属性
数据库角色有大量的属性,这些属性定义了角色的数据库登录以及 *** 作权限。
CREATE ROLE name [ [ WITH ] option [ ... ] ] where option can be: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp' | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid
登录权限
LOGIN属性用于赋予角色拥有连接数据库权限,命令二选一
CREATE ROLE name LOGIN; CREATE USER name;
CREATE USER 和CREATE ROLE几乎相同,除了CREATE USER默认带有登录权限,CREATE ROLE没有。
超级用户
超级用户拥有数据库的所有权限,必须小心超级用户的权限赋予,命令如下
CREATE ROLE name SUPERUSER;
创建数据库权限
CREATE ROLE name CREATEDB;
创建角色权限
CREATE ROLE name CREATEROLE;
初始化复制
CREATE ROLE name REPLICATION LOGIN;
密码
密码是用户登录数据库的客户端认证方式。密码创建后采用md5加密算法加密。
CREATE ROLE name PASSWORD 'string';
更改权限
ALTER ROLE name SET enable_indexscan TO off;3、角色组
角色组类似于 *** 作系统的组权限,可以非常方便的对组内成员的权限进行管理。
可以用过GRANT和REVOKE *** 作进行权限的赋予和回收。
GRANT group_role TO role1, ... ; REVOKE group_role FROM role1, ... ;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)