首页 > 代码库 > 用户角色的操作三
用户角色的操作三
\du 角色列表
select rolname from pg_roles; 查看角色
select usename from pg_user; 查看用户
角色和用户本质没区别,只是,创建的角色是不带登录权限,用户创建的时候给了登录权限;
角色给了登录权限之后就相当于自动创建同名的用户;
Linux的登录是:psql -U david -d postgres;
\du 可以理解为列出的用户和角色比较全,包括可以付给登录权限就可以转为用户;
---
给角色登录权限就是修改这个角色有登录权限;
\du 列出所有的角色
\du+ 列出的内容多了一个描述信息列
--
查看角色信息:
psql的操作参照psql --help输出的帮助信息,常使用的是
psql
-U 用户
-W 密码
-d 数据库
-f 执行文件
-V 版本信息
-h 主机
-p 端口
-w 永远不提示输入密码
---
新建一个用户,登录的时候没有输入密码就可以登录的原因是:
在pg_hba.conf 文件,发现local 的METHOD 为trust,所以不需要输入密码。
比如md5或者password模式,跟客户端的连接认证方式有关。
修改信息之后需要重启Postgresql生效;
-----
\du
alter role rolename login ;
修改角色具有登录权限;
postgres=# ALTER ROLE bella WITH LOGIN;
ALTER ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
bella | Create DB | {}
david | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
renee | Create DB | {}
sandy | | {}
postgres=#
---
ALTER ROLE renee WITH CREATEROLE; 赋予renee 创建角色的权限
ALTER ROLE david WITH PASSWORD ‘ufo456‘; 赋予david 带密码登录权限
ALTER ROLE sandy VALID UNTIL ‘2014-04-24‘; 设置sandy 角色的有效期
create role father login nosuperuser nocreatedb noinherit encrypted password ‘abc123‘; 授权登录,其他什么权限也没有
--
encrypted 加密
inherit 继承标志,就是用户继承组的标志;
superuser 超级用户;
--
GRANT CONNECT ON DATABASE testdb to father; 授权连接该数据库
\c testdb father 表示使用该用户操作这个数据库
\dt
GRANT USAGE ON SCHEMA public to father;
官方对usage的解释:
USAGE “无权限”的同义词
当您想要创建一个没有权限的用户时,可以指定USAGE。
usage的字面意思就是用法,其实就是让你这个用户可以像个用户似的登录,但是除了能看到有那写数据库外,什么权限也没有;
GRANT SELECT on public.emp to father; 授权查询权限;