\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; 授权查询权限;