摘选官方文档关于user命令知识点如下:

CREATE USER  创建一个用户。
● 通过CREATE USER创建的用户,默认具有LOGIN权限。
● 通过CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA。
● 系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。
语法格式
CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE };
其中option子句用于设置权限及属性等信息。
参数说明
● user_name
用户名称。 取值范围:字符串,要符合标识符的命名规范。且最大长度不超过63个字符。
● password
登录密码。
密码规则如下:
– 密码默认不少于8个字符。
– 不能与用户名及用户名倒序相同。
– 至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。
– 密码也可以是符合格式要求的密文字符串,这种情况主要用于用户数据导入场景,不推荐用户直接使用。如果直接使用密文密码,用户需要知道密文密码对应的明文,并且保证明文密码复杂度,数据库不会校验密文密码复杂度,直接使用密文密码的安全性由用户保证。
– 创建用户时,应当使用双引号或单引号将用户密码括起来。
取值范围:字符串。

ALTER USER  修改数据库用户的属性。
ALTER USER中修改的会话参数只针对指定的用户,且在下一次会话中有效。
语法格式
● 修改用户的权限等信息。
ALTER USER user_name [ [ WITH ] option [ ... ] ];

DROP USER  删除用户,同时会删除同名的schema。
● 须使用CASCADE级联删除依赖用户的对象(除数据库外)。当删除用户的级联对象时,如果级联对象处于锁定状态,则此级联对象无法被删除,直到对象被解锁或锁定级联对象的进程被杀死。
● 在openGauss中,存在一个配置参数enable_kill_query,此参数在配置文件postgresql.conf中。此参数影响级联删除用户对象的行为:
– 当参数enable_kill_query为on ,且使用CASCADE模式删除用户时,会自动kill锁定用户级联对象的进程,并删除用户。
– 当参数enable_kill_query为Ñff,且使用CASCADE模式删除用户时,会等待锁定级联对象的进程结束之后再删除用户。
● 在数据库中删除用户时,如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库,请用户先手动删除其他数据库中的依赖对象或直接删除依赖数据库,再删除用户。即drop user不支持跨数据库进行级联删除。
● 如果该用户被DATA SOURCE对象依赖时,无法直接级联删除该用户,需要手动删除对应的DATA SOURCE对象之后再删除该用户。
语法格式
DROP USER [ IF EXISTS ] user_name [, ...] [ CASCADE | RESTRICT ];
1.创建用户user1、user2、user3,授予user1、user2、user3数据库系统的SYSADMIN权限列出所有数据库角色。

使用CREATE USER 命令创建用户,ALTER USER命令授予权限,\du查看用户角色。

--执行下面的SQL语句,创建用户user1、user2、user3:
[omm@ogdb1 ~]$ gsql -d omm -p 40000 -r
gsql ((openGauss 3.1.0 build 4e931f9a) compiled at 2022-09-29 14:19:24 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

omm=#  CREATE USER user1 IDENTIFIED BY 'kunpeng@1234';
CREATE ROLE
omm=#  CREATE USER user2 IDENTIFIED BY 'kunpeng@1234';
CREATE ROLE
omm=#  CREATE USER user3 IDENTIFIED BY 'kunpeng@1234';
CREATE ROLE

--授予user1、user2、user3数据库系统的SYSADMIN权限:

omm=# ALTER USER user1 SYSADMIN;
ALTER ROLE
omm=# ALTER USER user2 SYSADMIN;
ALTER ROLE
omm=# ALTER USER user3 SYSADMIN;
ALTER ROLE

--执行下面的命令,查看有哪些用户:
omm=# \du
                                                              List of roles
 Role name |                                                    Attributes                                                    | Member of 
-----------+------------------------------------------------------------------------------------------------------------------+-----------
 omm       | Sysadmin, Create role, Create DB, Replication, Administer audit, Monitoradmin, Operatoradmin, Policyadmin, UseFT | {}
 user1     | Sysadmin                                                                                                         | {}
 user2     | Sysadmin                                                                                                         | {}
 user3     | Sysadmin                                                                                                         | {}

omm=# \dg
                                                              List of roles
 Role name |                                                    Attributes                                                    | Member of 
-----------+------------------------------------------------------------------------------------------------------------------+-----------
 omm       | Sysadmin, Create role, Create DB, Replication, Administer audit, Monitoradmin, Operatoradmin, Policyadmin, UseFT | {}
 user1     | Sysadmin                                                                                                         | {}
 user2     | Sysadmin                                                                                                         | {}
 user3     | Sysadmin                                                                                                         | {}

2.分别使用user1、user2、user3访问数据库musicdb2,创建各自的表,并插入数据。表名和数据如下:

表名分别为: products1、 products2、 products3

字段名数据类型含义
product_idINTEGER产品编号
product_nameChar(20)产品名
categoryChar(30)种类

向表中插入数据:

product_idproduct_namecategory
1502olympus cameraelectrncs
1601lamazetoys
1700wait interfaceBooks
1666harry pottertoys
--准备测试环境
omm=# CREATE TABLESPACE music_tbs RELATIVE LOCATION 'tablespace/music_tbsfile1';
CREATE TABLESPACE
omm=# CREATE DATABASE musicdb2  WITH TABLESPACE = music_tbs;
CREATE DATABASE

--以用户user1的身份在数据库musicdb2中创建表products1,并插入四条数据:
omm=# \c musicdb2 user1
Password for user user1: 
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "musicdb2" as user "user1".
  
musicdb2=> create table products1(product_id integer,product_name char(20),category char(30));
CREATE TABLE
musicdb2=> insert into products1 values(1502,'olympus camera','electrncs'),(1601,'lamaze','toys'),(1700,'wait interface','Books'),(1666,'harry potter','toys');
INSERT 0 4
musicdb2=> select * from products1;
 product_id |     product_name     |            category            
------------+----------------------+--------------------------------
       1502 | olympus camera       | electrncs                     
       1601 | lamaze               | toys                          
       1700 | wait interface       | Books                         
       1666 | harry potter         | toys                          
(4 rows)
 
--以用户user2的身份在数据库musicdb2中创建表products2,并插入四条数据:
musicdb2=> \c musicdb2 user2
Password for user user2: 
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "musicdb2" as user "user2".

musicdb2=> create table products2(product_id integer,product_name char(20),category char(30));
CREATE TABLE
musicdb2=> insert into products2 values(1502,'olympus camera','electrncs'),(1601,'lamaze','toys'),(1700,'wait interface','Books'),(1666,'harry potter','toys');
INSERT 0 4
musicdb2=> select * from products2;
 product_id |     product_name     |            category            
------------+----------------------+--------------------------------
       1502 | olympus camera       | electrncs                     
       1601 | lamaze               | toys                          
       1700 | wait interface       | Books                         
       1666 | harry potter         | toys                          
(4 rows)
 

--以用户user3的身份在数据库musicdb2中创建表products3,并插入四条数据:
musicdb2=> \c musicdb2 user3
Password for user user3: 
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "musicdb2" as user "user3".

musicdb2=> create table products3(product_id integer,product_name char(20),category char(30));
CREATE TABLE
musicdb2=> insert into products3 values(1502,'olympus camera','electrncs'),(1601,'lamaze','toys'),(1700,'wait interface','Books'),(1666,'harry potter','toys');
INSERT 0 4
musicdb2=> select * from products3;
 product_id |     product_name     |            category            
------------+----------------------+--------------------------------
       1502 | olympus camera       | electrncs                     
       1601 | lamaze               | toys                          
       1700 | wait interface       | Books                         
       1666 | harry potter         | toys                          
(4 rows)
 
3.使用user1、user2、user3用户中的任何一个,查看当前数据库musicdb2有哪些表

\dE,\di,\ds,\dt和\dv分别代表着外部表,索引,序列,表和视图。可以以任意顺序指定其中一个或者它们的组合来列出这些对象。例如:\dit列出所有的索引和表。在命令名称后面追加+,则每一个对象的物理尺寸以及相关的描述也会被列出。

--查看数据库表
musicdb2=> \dt
                           List of relations
 Schema |   Name    | Type  | Owner |             Storage              
--------+-----------+-------+-------+----------------------------------
 public | products1 | table | user1 | {orientation=row,compression=no}
 public | products2 | table | user2 | {orientation=row,compression=no}
 public | products3 | table | user3 | {orientation=row,compression=no}
(3 rows)

musicdb2=> 
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐