pg库角色管理
1.创建一个用户"user1",需要在具有’Create role’用户环境下执行
mydb=# create user user1;
1.1 shell命令行创建用户’user2’
[user1@localhost ~]$ createuser -U postgresql user2
2.以’user1’登入数据库
[postgresql@localhost data]$ psql -h 192.168.1.200 -U user1 mydb
以上方法创建的用户有LOGGIN权限,但是对数据库没有权限,可以切换数据库
并且可以查看所在数据下的表,但是无法操作表中数据
2.1 对表的查询
mydb=> select * from userinfo;
ERROR: permission denied for relation userinfo
2.2 对标的写入
mydb=> insert into userinfo values(1,'tom');
ERROR: permission denied for relation userinfo
3.创建一个带密码的用户’user3’
mydb=# create user user3 with password '123456';
3.1 修改user3的登入认证方式(pg_hba.conf)
host mydb user3 192.168.1.0/24 md5
host all all 192.168.1.0/24 trust
注:以上两条配置,md5加密认证所在行必须在上面,应为匹配为从上至下匹配,匹配即截止
3.2 刷新配置
[postgresql@localhost data]$ pg_ctl reload -D /data/psql/data/
server signaled
3.3 验证,以’user3’登入需要输入密码
[postgresql@localhost data]$ psql -h 192.168.1.200 -U user3 mydb
Password for user user3:
psql (10.0)
Type "help" for help.
mydb=>
3.4 口令认证方式有:scram-sha-256,md5,password(名文发送密码)
4. pg库角色创建的另一种方式
mydb=# create role user4;
注:此命令创建的角色没有的登入权限
[postgresql@localhost data]$ psql -h 192.168.1.200 -U user4 mydb
psql: FATAL: role "user4" is not permitted to log in
4.1 此方法创建角色需要显示给用户权限
mydb=# create role user5 login
验证:
[postgresql@localhost data]$ psql -h 192.168.1.200 -U user5 mydb
psql (10.0)
Type "help" for help.
mydb=>
5. pg库删除用户
5.1 查看现有用户
mydb=# \du
List of roles
Role name | Attributes | Member of
------------+------------------------------------------------------------+-----------
postgresql | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
user1 | | {}
user2 | | {}
user3 | | {}
user4 | Cannot login | {}
user5 | | {}
5.2 删除’user4’
mydb=# drop user user4;
mydb=# \du
List of roles
Role name | Attributes | Member of
------------+------------------------------------------------------------+-----------
postgresql | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
user1 | | {}
user2 | | {}
user3 | | {}
user5 | | {}
注:drop user username 与 drop role username 是一样的;此外与命令行提供createuser一样,也提供dropuser
6. pg库角色属性
login:登入权限
supperuser:超级用户,特点是除了登入权限,会绕开权限检查
createdb:创建数据库权限
createrole:创建角色权限
replication:发起复制流权限
password:设置密码,需要与pg_hba.conf规则共同作用