\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;  授权查询权限;
 
原文地址:http://www.cnblogs.com/pxpxstudy/p/3732248.html