postgresql怎么给一个用户赋予权限
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql怎么给一个用户赋予权限相关的知识,希望对你有一定的参考价值。
grant db_role1 to db_user1,db_user2; 意为:给用户1,2赋予角色1,两个用户就拥有了角色1对应的权限。
1、角色
PostgreSQL使用角色的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看作是一个数据库用户,或者一组数据库用户。 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。
2、角色的权限
一个数据库角色可以有很多权限,这些权限定义了角色和拥有角色的用户可以做的事情。
3、用户
其实用户和角色都是角色,只是用户是具有登录权限的角色。
4、赋予角色控制权限
可以使用GRANT 和REVOKE命令赋予用户角色,来控制权限。
如:
create role db_role1 createdb createrole; --创建角色1
grant db_role1 to db_user1,db_user2; --给用户1,2赋予角色1,两个用户就拥有了创建数据库和创建角色的权限
revoke db_role1 from db_user1; --从用户1移除角色1,用户不再拥有角色1的权限。
扩展资料
1、角色权限相关脚本
create role db_role1 LOGIN; --创建具有登录权限的角色db_role1
create role db_role2 SUPERUSER; --创建具有超级用户权限的角色
create role db_role3 CREATEDB; --创建具有创建数据库权限的角色
create role db_role4 CREATEROLE --创建具有创建角色权限的角色
alter role db_role1 nologin nocreatedb; --修改角色取消登录和创建数据库权限
2、用户相关脚本
create user db_user1 password '123'; --创建用户
create role db_user1 password '123' LOGIN; --同上一句等价
drop user db_user1; --删除用户
alter user db_user1 password '123456'; --修改密码
alter user db_user1 createdb createrole; --对用户授权
参考资料
百度百科-postgresql
可以用下面的命令创建和删除角色,
CREATE ROLE name;
DROP ROLE name;
为了方便,也可以在 shell 命令上直接调用程序 createuser 和 dropuser,这些工具对相应命令提供了封装:
createuser name
dropuser name
数据库对象上的权限有:SELECT,INSERT, UPDATE,DELETE,RULE, REFERENCES,TRIGGER,CREATE, TEMPORARY,EXECUTE,和 USAGE等,具体见下面定义
typedefuint32AclMode; /* a bitmask of privilege bits */
#define ACL_INSERT (1<<0) /* forrelations */
#defineACL_SELECT (1<<1)
#defineACL_UPDATE (1<<2)
#defineACL_DELETE (1<<3)
#defineACL_TRUNCATE (1<<4)
#defineACL_REFERENCES (1<<5)
#defineACL_TRIGGER (1<<6)
#defineACL_EXECUTE (1<<7) /* for functions */
#defineACL_USAGE (1<<8) /* for languages, namespaces, FDWs, and
* servers */
#defineACL_CREATE (1<<9) /* for namespaces and databases */
#defineACL_CREATE_TEMP (1<<10) /* for databases */
#defineACL_CONNECT (1<<11) /* for databases */
#defineN_ACL_RIGHTS 12 /* 1plus the last 1<<x */
#defineACL_NO_RIGHTS 0
/*Currently, SELECT ... FOR UPDATE/FOR SHARE requires UPDATE privileges */
#defineACL_SELECT_FOR_UPDATE ACL_UPDATE
我们可以用特殊的名字 PUBLIC 把对象的权限赋予系统中的所有角色。 在权限声明的位置上写 ALL,表示把适用于该对象的所有权限都赋予目标角色。
beigang=# grantall on schema csm_ca to public;
GRANT
beigang=# revoke all on schema csm_ca frompublic;
REVOKE
beigang=#
每种对象的all权限定义如下:
/*
* Bitmasks defining "allrights" for each supported object type
*/
#defineACL_ALL_RIGHTS_COLUMN (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_REFERENCES)
#defineACL_ALL_RIGHTS_RELATION (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_DELETE|ACL_TRUNCATE|ACL_REFERENCES|ACL_TRIGGER)
#defineACL_ALL_RIGHTS_SEQUENCE (ACL_USAGE|ACL_SELECT|ACL_UPDATE)
#defineACL_ALL_RIGHTS_DATABASE (ACL_CREATE|ACL_CREATE_TEMP|ACL_CONNECT)
#define ACL_ALL_RIGHTS_FDW (ACL_USAGE)
#defineACL_ALL_RIGHTS_FOREIGN_SERVER (ACL_USAGE)
#defineACL_ALL_RIGHTS_FUNCTION (ACL_EXECUTE)
#defineACL_ALL_RIGHTS_LANGUAGE (ACL_USAGE)
#defineACL_ALL_RIGHTS_LARGEOBJECT (ACL_SELECT|ACL_UPDATE)
#defineACL_ALL_RIGHTS_NAMESPACE (ACL_USAGE|ACL_CREATE)
#defineACL_ALL_RIGHTS_TABLESPACE (ACL_CREATE)本回答被提问者和网友采纳 参考技术B grant select on <tablename> to <user>
oracle中怎么赋予用户权限
参考技术Aoracle中赋予用户权限的具体步骤如下:
1、首先打开电脑,点击打开电脑桌面左下角的开始图标。
2、然后在弹出来的窗口中点击搜索框,输入“cmd”,回车确定。
3、然后在弹出来的窗口中点击输入“grant unlimited tablespace to 用户名”,回车确定,获取操作表空间权限。
4、然后在弹出来的窗口中点击打开“grant create table to 用户名”回车确定,获取创建表权限。
5、然后点击输入“grante drop table to 用户名”,回车确定获取删除表权限。
6、点击输入“grant insert table to 用户名”,回车确定获取插入表权限。
7、点击输入“grant update table to 用户名”,回车确定获取更新表权限。
以上是关于postgresql怎么给一个用户赋予权限的主要内容,如果未能解决你的问题,请参考以下文章
navicat制作postgresql业务用户,赋予能删改查权限