CREATE ROLE 名称 [ [ WITH ] 选项 [ 。。。 ] ]
选项可以是
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT 连接限制
| [ ENCRYPTED ] PASSWORD '口令'
| VALID UNTIL '时间戳'
| IN ROLE 角色名称 [, 。。。]
| IN GROUP 角色名称 [, 。。。]
| ROLE 角色名称 [, 。。。]
| ADMIN 角色名称 [, 。。。]
| USER 角色名称 [, 。。。]
| SYSID uid
postgres=#
postgres=# \h drop role
命令: DROP ROLE
描述: 移除一个数据库成员
语法:
DROP ROLE [ IF EXISTS ] 名称 [, 。。。]
给上面的用户 user1 赋予权限:
分配权限 GRANT;
撤回权限 REVOKE。
权限有哪些?\h grant 命令
postgres=# \h grant
命令: GRANT
描述: 定义存取权限
语法:
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[, 。。。] | ALL [ PRIVILEGES ] }
---省略---
来来来,继续操作 用户(角色)user1:
使用 alter user 对用户进行更新:
# \h alter user
命令: ALTER USER
描述: 更改数据库角色
语法:
ALTER USER role_specification [ WITH ] 选项 [ 。。。 ]
---省略---
添加密码:123456
没有密码时
C:\Users\Mi>psql -U user1
用户 user1 的口令:
psql: fe_sendauth: no password supplied
修改密码及使用密码登录:此时没有权限
postgres=# alter user user1 password '123456';
ALTER ROLE
postgres=# select * from pg_user;
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
postgres | 10 | t | t | t | t | ******** | |
user1 | 16434 | f | f | f | f | ******** | |
(2 行记录)
postgres=# \q
C:\Users\Mi>psql -U user1
用户 user1 的口令:
psql: 致命错误: 数据库 "user1" 不存在
给用户 user1 添加数据库lib1 的权限:
授权 数据库 lib1 的所有权限
# grant all privileges on database lib1 to user1;
GRANT
登录——不指定数据库:失败
>psql -U user1
用户 user1 的口令:
psql: 致命错误: 数据库 "user1" 不存在
登录,指定拥有权限的数据库 lib1:登录成功
C:\Users\Mi>psql -U user1 -d lib1
用户 user1 的口令:
psql (10。18)