暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第19天:用户和角色管理

原创 huiwenshu 2022-12-12
125

1、创建test10_tbs的表空间,在这个表空间中创建数据库testdb10
create tablespace test10_tbs relative location 'tablespace/test10_tbs';
create database testdb10 with tablespace test10_tbs;

omm=# create tablespace test10_tbs relative location 'tablespace/test10_tbs';
create database testdb10 with tablespace test10_tbs;CREATE TABLESPACE
omm=# create database testdb10 with tablespace test10_tbs;
CREATE DATABASE
omm=# \l
                              List of databases
   Name    | Owner | Encoding |   Collate   |    Ctype    | Access privileges 
-----------+-------+----------+-------------+-------------+-------------------
 enmdb     | hc    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 musicdb1  | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 newdb1    | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 newdb2    | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 newdb3    | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 omm       | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |       |          |             |             | omm=CTc/omm
 template1 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |       |          |             |             | omm=CTc/omm
 testdb10  | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(10 rows)

omm=# \l+
                                                               List of databases
   Name    | Owner | Encoding |   Collate   |    Ctype    | Access privileges | Size  | Tablespace |                Description                 
-----------+-------+----------+-------------+-------------+-------------------+-------+------------+--------------------------------------------
 enmdb     | hc    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 14 MB | enmtbs     | 
 musicdb1  | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 13 MB | app_ts     | 
 newdb1    | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 12 MB | newtbs1    | 
 newdb2    | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 12 MB | newtbs1    | 
 newdb3    | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 12 MB | newtbs1    | 
 omm       | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 13 MB | pg_default | 
 postgres  | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 17 MB | pg_default | default administrative connection database
 template0 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +| 12 MB | pg_default | default template for new databases
           |       |          |             |             | omm=CTc/omm       |       |            | 
 template1 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +| 12 MB | pg_default | unmodifiable empty database
           |       |          |             |             | omm=CTc/omm       |       |            | 
 testdb10  | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 12 MB | test10_tbs | 
(10 rows)



2、使用create user创建用户user10,登录数据库testdb10,创建测试表t1和t2

create user user10 identified by 'qaz_hc123';
grant all privileges on  database testdb10 to user10;

\quit
gsql -Uuser10 -Wqaz_hc123 -r -d testdb10
create table t1 as select * from pg_class;
create table t2 as select * from pg_class;

omm=# create user user10 identified by 'qaz_hc123';
CREATE ROLE
omm=# grant all privileges on testdb10 to user10;
ERROR:  relation "testdb10" does not exist
omm=# grant all privileges on database testdb10 to user10;
GRANT
omm=# gsql -Uuser10 -Wqaz_hc123 -r -d testdb10
omm-# \quit
omm@911d320f8566:~$ gsql -Uuser10 -Wqaz_hc123 -r -d testdb10
gsql ((openGauss 3.1.0 build 4e931f9a) compiled at 2022-09-29 14:19:46 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

testdb10=> \conninfo
You are connected to database "testdb10" as user "user10" via socket in "/tmp" at port "5432".
testdb10=> create table t1 as select * from pg_class;
create table t2 as select * from pg_class;ERROR:  permission denied for schema public
DETAIL:  N/A
testdb10=> create table t2 as select * from pg_class;
ERROR:  permission denied for schema public
DETAIL:  N/A
testdb10=> \q
omm@911d320f8566:~$ gsql -r
gsql ((openGauss 3.1.0 build 4e931f9a) compiled at 2022-09-29 14:19:46 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

omm=# \du
                                                              List of roles
 Role name |                                                    Attributes                                                    | Member of 
-----------+------------------------------------------------------------------------------------------------------------------+-----------
 gaussdb   | Sysadmin                                                                                                         | {}
 hc        | Sysadmin                                                                                                         | {}
 john      |                                                                                                                  | {}
 omm       | Sysadmin, Create role, Create DB, Replication, Administer audit, Monitoradmin, Operatoradmin, Policyadmin, UseFT | {}
 test      |                                                                                                                  | {}
 user10    |                                                                                                                  | {}
 user5     | Sysadmin                                                                                                         | {}

omm=# alter user user10 sysadmin;
ALTER ROLE
omm=# \quit
omm@911d320f8566:~$ gsql -Uuser10 -Wqaz_hc123 -r -d testdb10
gsql ((openGauss 3.1.0 build 4e931f9a) compiled at 2022-09-29 14:19:46 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

testdb10=> create table t1 as select * from pg_class;
create table t2 as select * from pg_class;INSERT 0 795
testdb10=> create table t2 as select * from pg_class;
INSERT 0 798


3、使用create role创建角色role10,登录数据库testdb10
create role role10 identified by 'qaz_hc123';
\du
gsql -Urole10 -Wqaz_hc123 -r -d testdb10;

testdb10=> create role role10 identified by 'qaz_hc123';
CREATE ROLE
testdb10=> \du
                                                              List of roles
 Role name |                                                    Attributes                                                    | Member of 
-----------+------------------------------------------------------------------------------------------------------------------+-----------
 gaussdb   | Sysadmin                                                                                                         | {}
 hc        | Sysadmin                                                                                                         | {}
 john      |                                                                                                                  | {}
 omm       | Sysadmin, Create role, Create DB, Replication, Administer audit, Monitoradmin, Operatoradmin, Policyadmin, UseFT | {}
 role10    | Cannot login                                                                                                     | {}
 test      |                                                                                                                  | {}
 user10    | Sysadmin                                                                                                         | {}
 user5     | Sysadmin                                                                                                         | {}

testdb10=> \quit
omm@911d320f8566:~$ gsql -Urole10 -Wqaz_hc123 -r -d testdb10;
gsql: FATAL:  role "role10" is not permitted to login
omm@911d320f8566:~$ gsql -r
gsql ((openGauss 3.1.0 build 4e931f9a) compiled at 2022-09-29 14:19:46 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

omm=# alter user role10 login; 
ALTER ROLE
omm=# \du
                                                              List of roles
 Role name |                                                    Attributes                                                    | Member of 
-----------+------------------------------------------------------------------------------------------------------------------+-----------
 gaussdb   | Sysadmin                                                                                                         | {}
 hc        | Sysadmin                                                                                                         | {}
 john      |                                                                                                                  | {}
 omm       | Sysadmin, Create role, Create DB, Replication, Administer audit, Monitoradmin, Operatoradmin, Policyadmin, UseFT | {}
 role10    |                                                                                                                  | {}
 test      |                                                                                                                  | {}
 user10    | Sysadmin                                                                                                         | {}
 user5     | Sysadmin                                                                                                         | {}

omm=# \quit
omm@911d320f8566:~$ gsql -Urole10 -Wqaz_hc123 -r -d testdb10;
gsql ((openGauss 3.1.0 build 4e931f9a) compiled at 2022-09-29 14:19:46 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

testdb10=> \conninfo
You are connected to database "testdb10" as user "role10" via socket in "/tmp" at port "5432".
testdb10=> 



4、将表t1直接删除,将前面创建的表空间和数据库、表t2转给role10,删除用户user10

testdb10=> \conninfo
You are connected to database "testdb10" as user "role10" via socket in "/tmp" at port "5432".
testdb10=> \t
Showing only tuples.
testdb10=> \dt
 public | t1   | table |       | {orientation=row,compression=no}
 public | t2   | table |       | {orientation=row,compression=no}

testdb10=> drop table t1;
ERROR:  permission denied for relation t1
DETAIL:  N/A
testdb10=> \c testdb10 user10
Password for user user10: 
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "testdb10" as user "user10".
testdb10=> \conninfo
You are connected to database "testdb10" as user "user10" via socket in "/tmp" at port "5432".
testdb10=> drop table t1;
DROP TABLE
testdb10=> \db
 app_ts     | omm   | tablespace/app_ts01
 enmtbs     | omm   | tablespace/enmtbs01
 newtbs1    | omm   | tablespace/newtbs1
 pg_default | omm   | 
 pg_global  | omm   | 
 tbs_idx    | omm   | tablespace/tbs_idx1
 test10_tbs | omm   | tablespace/test10_tbs

testdb10=> \db+
 app_ts     | omm   | tablespace/app_ts01   |                   | 
 enmtbs     | omm   | tablespace/enmtbs01   |                   | 
 newtbs1    | omm   | tablespace/newtbs1    |                   | 
 pg_default | omm   |                       |                   | 
 pg_global  | omm   |                       |                   | 
 tbs_idx    | omm   | tablespace/tbs_idx1   |                   | 
 test10_tbs | omm   | tablespace/test10_tbs |                   | 

testdb10=> alter tablespace test10_tbs owner to role10;
ALTER TABLESPACE
testdb10=> alter database testdb10 owner to role10;
ALTER DATABASE
testdb10=> \l+
 enmdb     | hc     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 14 MB | enmtbs     | 
 musicdb1  | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 13 MB | app_ts     | 
 newdb1    | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 12 MB | newtbs1    | 
 newdb2    | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 12 MB | newtbs1    | 
 newdb3    | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 12 MB | newtbs1    | 
 omm       | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 13 MB | pg_default | 
 postgres  | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                   | 17 MB | pg_default | default administrative connection database
 template0 | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +| 12 MB | pg_default | default template for new databases
           |        |          |             |             | omm=CTc/omm       |       |            | 
 template1 | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +| 12 MB | pg_default | unmodifiable empty database
           |        |          |             |             | omm=CTc/omm       |       |            | 
 testdb10  | role10 | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/role10       +| 13 MB | test10_tbs | 
           |        |          |             |             | role10=CTc/role10+|       |            | 
           |        |          |             |             | user10=CTc/role10+|       |            | 
           |        |          |             |             | user10=APm/role10 |       |            | 

testdb10=> \db+
 app_ts     | omm    | tablespace/app_ts01   |                   | 
 enmtbs     | omm    | tablespace/enmtbs01   |                   | 
 newtbs1    | omm    | tablespace/newtbs1    |                   | 
 pg_default | omm    |                       |                   | 
 pg_global  | omm    |                       |                   | 
 tbs_idx    | omm    | tablespace/tbs_idx1   |                   | 
 test10_tbs | role10 | tablespace/test10_tbs |                   | 
testdb10=> \c               
Password for user user10: 
FATAL:  Invalid username/password,login denied.
Previous connection kept
testdb10=> \conninfo
You are connected to database "testdb10" as user "user10" via socket in "/tmp" at port "5432".
testdb10=> drop user user10;
ERROR:  current user cannot be dropped
testdb10=> \c
Password for user user10: 
FATAL:  Invalid username/password,login denied.
Previous connection kept
testdb10=> quit\\
Invalid command \. Try \? for help.
testdb10-> \quit
omm@911d320f8566:~$ gsql -r
gsql ((openGauss 3.1.0 build 4e931f9a) compiled at 2022-09-29 14:19:46 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

omm=# drop user user10;
ERROR:  role "user10" cannot be dropped because some objects depend on it
DETAIL:  privileges for database testdb10
omm=# revoke all privileges on testdb10 from user10;
ERROR:  relation "testdb10" does not exist
omm=# revoke all privileges on database testdb10 from user10;
REVOKE
omm=# drop user user10;                                      
DROP ROLE



5、最后删除role10

testdb10=# drop table t2;
DROP TABLE
testdb10=# \c omm
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "omm" as user "omm".
omm=# \l
                               List of databases
   Name    | Owner  | Encoding |   Collate   |    Ctype    | Access privileges 
-----------+--------+----------+-------------+-------------+-------------------
 enmdb     | hc     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 musicdb1  | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 newdb1    | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 newdb2    | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 newdb3    | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 omm       | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |        |          |             |             | omm=CTc/omm
 template1 | omm    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |        |          |             |             | omm=CTc/omm
 testdb10  | role10 | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/role10       +
           |        |          |             |             | role10=CTc/role10
(10 rows)

omm=# drop user rol10 cascade;
ERROR:  role "rol10" does not exist
omm=# drop user role10 cascade;
ERROR:  role "role10" cannot be dropped because some objects depend on it
DETAIL:  owner of database testdb10
owner of tablespace test10_tbs
omm=# alter database testdb10 owner to omm;
ALTER DATABASE
omm=# \db+                   
                              List of tablespaces
    Name    | Owner  |       Location        | Access privileges | Description 
------------+--------+-----------------------+-------------------+-------------
 app_ts     | omm    | tablespace/app_ts01   |                   | 
 enmtbs     | omm    | tablespace/enmtbs01   |                   | 
 newtbs1    | omm    | tablespace/newtbs1    |                   | 
 pg_default | omm    |                       |                   | 
 pg_global  | omm    |                       |                   | 
 tbs_idx    | omm    | tablespace/tbs_idx1   |                   | 
 test10_tbs | role10 | tablespace/test10_tbs |                   | 
(7 rows)

omm=# alter tablespace test10_tbs owner to omm;
ALTER TABLESPACE
omm=# drop role role10;
DROP ROLE
omm=# 
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论