用户角色的操作三

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

posted @ 2014-05-16 15:15  教程学习  阅读(228)  评论(0编辑  收藏  举报