openGauss GRANT授权

GRANT 官网 

● SYSADMIN:允许用户创建数据库,创建表空间,允许用户创建用户/角色,允许用户查看、删除审计日志,允许用户查看其它用户的数据
● MONADMIN:允许用户对系统模式dbe_perf及该模式下的监控视图或函数进行查看和权限管理,
● OPRADMIN:允许用户使用Roach工具执行数据库备份和恢复
● POLADMIN:允许用户创建资源标签、创建动态数据脱敏策略和统一审计策略
● AUDITADMIN:允许用户查看、删除审计日志
● CREATEDB:允许用户创建数据库
● USEFT:允许用户创建外表
● CREATEROLE:允许用户创建用户/角色
● INHERIT:允许用户继承所在组的角色的权限
● LOGIN:允许用户登录数据库
● REPLICATION:允许用户执行流复制相关操作

官网示例

 postgres=# CREATE USER joe PASSWORD 'Bigdata@123';  
 postgres=# GRANT ALL PRIVILEGES TO joe; 
 授权成功后,用户joe会拥有sysadmin的所有权限。 
 示例:将对象权限授权给用户或者角色。 
 撤销joe用户的sysadmin权限,然后将模式tpcds的使用权限和表tpcds.reason的所有权限授权给用户joe。postgres=# REVOKE ALL PRIVILEGES FROM joe; 
 postgres=# GRANT USAGE ON SCHEMA tpcds TO joe; 
 postgres=# GRANT ALL PRIVILEGES ON tpcds.reason TO joe; 
 授权成功后,joe用户就拥有了tpcds.reason表的所有权限,包括增删改查等权限。 
 将tpcds.reason表中r_reason_sk、r_reason_id、r_reason_desc列的查询权限,r_reason_desc的更新权限授权给joe。postgres=# GRANT select ( r_reason_sk,r_reason_id,r_reason_desc ),update ( r_reason_desc ) ON tpcds.reason TO joe; 
 授权成功后,用户joe对tpcds.reason表中r_reason_sk,r_reason_id的查询权限会立即生效。如果joe用户需要拥有将这些权限授权给其他用户的权限,可以通过以下语法对joe用户进行授权。 
 postgres=# GRANT select ( r_reason_sk,r_reason_id ) ON tpcds.reason TO joe WITH GRANT OPTION; 
 将数据库postgres的连接权限授权给用户joe,并给予其在postgres中创建schema的权限,而且允许joe将此权限授权给其他用户。 
 postgres=# GRANT create,connect on database postgres TO joe WITH GRANT OPTION; 
 创建角色tpcds_manager,将模式tpcds的访问权限授权给角色tpcds_manager,并授予该角色在tpcds下创建对象的权限,不允许该角色中的用户将权限授权给其他人。 
 postgres=# CREATE ROLE tpcds_manager PASSWORD 'Bigdata@123';  
 postgres=# GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager; 
 将表空间tpcds_tbspc的所有权限授权给用户joe,但用户joe无法将权限继续授予其他用户。 
 postgres=# CREATE TABLESPACE tpcds_tbspc RELATIVE LOCATION 'tablespace/tablespace_1';  
 postgres=# GRANT ALL ON TABLESPACE tpcds_tbspc TO joe; 
 示例:将用户或者角色的权限授权给其他用户或角色。 
 创建角色manager,将joe的权限授权给manager,并允许该角色将权限授权给其他人。postgres=# CREATE ROLE manager PASSWORD 'Bigdata@123';  
 postgres=# GRANT joe TO manager WITH ADMIN OPTION; 
 创建用户senior_manager,将用户manager的权限授权给该用户。postgres=# CREATE ROLE senior_manager PASSWORD 'Bigdata@123';  
 postgres=# GRANT manager TO senior_manager; 
 撤销权限,并清理用户。postgres=# REVOKE manager FROM joe; 
 postgres=# REVOKE senior_manager FROM manager; 
 postgres=# DROP USER manager; 
 示例:撤销上述授予的权限,并清理角色和用户。 
 postgres=# REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe; 
 postgres=# REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe; 
 postgres=# REVOKE ALL ON TABLESPACE tpcds_tbspc FROM joe; 
 postgres=# DROP TABLESPACE tpcds_tbspc; 
 postgres=# REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager; 
 postgres=# DROP ROLE tpcds_manager; 
 postgres=# DROP ROLE senior_manager; 
 postgres=# DROP USER joe CASCADE; 

示例

# 创建角色
# 创建角色role1,授予role1创建数据库的权限
openGauss=# CREATE ROLE role1 WITH CREATEDB password 'openGauss@2021';

# 修改角色role1,授予角色role1监控管理员的权限,同时取消创建数据库的权限
openGauss=# ALTER ROLE role1 WITH MONADMIN NOCREATEDB;

# 创建名为joe的用户,并将sysadmin权限授权给他,授权成功后,用户joe会拥有sysadmin的所有权限。
openGauss=# CREATE USER joe PASSWORD 'Gauss@123456';
openGauss=# GRANT ALL PRIVILEGES TO joe;

# 撤销joe用户的sysadmin权限
openGauss=# REVOKE ALL PRIVILEGES FROM joe;

# 将用户user1的权限授权给用户user3
openGauss=# grant user1 to user3;

# 再回收用户user3的权限
openGauss=# revoke user1 from user3;

# 查询表权限
GRANT SELECT ON student TO PUBLIC;
GRANT SELECT ON student TO lisi;

# 要使特定用户能够创建和访问MOT(DDL、DML、SELECT),以下语句只执行一次:
GRANT USAGE ON FOREIGN SERVER mot_server TO <user>;

*
*
*

<think>好的,用户想了解openGauss的常用SQL命令和操作指令。首先,我需要回忆之前提供的引用内容,看看有哪些相关的信息可以整合。引用[1]提到了华为openGauss数据库命令的多样性和灵活性,并建议参考官方文档。引用[2]详细介绍了gsql工具的连接方式,比如使用gsql -d postgres -U 用户名 -W密码来连接数据库。引用[3]提到了安装时的命令,比如sh install.sh -w密码,这可能对用户安装有帮助,但用户现在更关注的是SQL命令和操作指令。 接下来,用户可能需要从基础开始,比如如何连接数据库,然后创建用户数据库,进行表操作等。根据引用[2],连接数据库的命令已经给出,应该放在最前面。然后,常用的SQL命令包括用户权限管理,比如创建用户授权,这部分需要结合标准的SQL语法,但openGauss可能有自己的扩展或特定命令,需要确保准确性。 数据库管理方面,创建、查看、切换数据库是基本操作,可以列出CREATE DATABASE、\l、\c等命令。表操作包括创建表、插入数据、查询、更新、删除,这些都是标准的SQL,但需要提醒用户注意openGauss的兼容性和特定语法。此外,索引的创建和维护也很重要,可以提到CREATE INDEX命令。 备份与恢复是运维中的关键,可能需要使用gs_dump和gs_restore工具,这些在引用中没有提到,但属于常见操作,需要确认是否属于openGauss的常用命令。事务控制如BEGIN、COMMIT、ROLLBACK也是必要的,确保用户了解事务的使用。 系统维护方面,查看数据库状态、日志、版本信息可能涉及VACUUM、\d+等命令,需要结合openGauss的特定命令。引用[3]中的安装命令可能不在用户当前需求范围内,但可以忽略。 最后,注意事项部分需要提醒用户权限问题、密码安全、备份重要性,以及参考官方文档,这些在引用[1]和[2]中都有提到。生成的相关问题需要围绕用户可能进一步想了解的内容,比如性能优化、权限管理、备份恢复、与其他数据库的差异等。 需要检查是否有遗漏的重要命令,比如用户管理中的修改密码、权限回收,或者openGauss特有的命令如表空间管理、分区表操作等。另外,确保所有命令的语法正确,比如在创建用户时使用WITH PASSWORD,授权时使用GRANT等。可能还需要提到连接参数中的端口和主机,如-h和-p选项,这在引用[2]的连接语句中没有出现,但实际使用中可能需要。 总结来说,结构应该分为连接、用户管理、数据库管理、表操作、索引、备份恢复、事务控制、系统维护和注意事项。每个部分列出常用命令和示例,确保用户能够一步步操作。同时,引用相关文献,比如在连接数据库时引用[2],注意事项引用[1]和[2]。</think>### OpenGauss 常用SQL命令及操作指令指南 #### **一、基础连接与退出** 1. **连接数据库** ```bash gsql -d 数据库名 -U 用户名 -W 密码 -h 主机地址 -p 端口 ``` 示例(默认连接本地数据库): ```bash gsql -d postgres -U gaussdb -W 'Test123@' [^2] ``` 2. **退出交互界面** ```sql \q ``` --- #### **二、用户权限管理** 1. **创建用户** ```sql CREATE USER 用户名 WITH PASSWORD '密码'; ``` 2. **授权** ```sql GRANT 权限 (SELECT/INSERT/ALL等) ON 表名 TO 用户; ``` 3. **查看用户列表** ```sql \du ``` --- #### **三、数据库管理** 1. **创建数据库** ```sql CREATE DATABASE 数据库名; ``` 2. **查看所有数据库** ```sql \l ``` 3. **切换数据库** ```sql \c 数据库名 ``` --- #### **四、表操作** 1. **创建表** ```sql CREATE TABLE 表名 ( 列1 数据类型 PRIMARY KEY, 列2 数据类型 NOT NULL ); ``` 2. **插入数据** ```sql INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2); ``` 3. **查询数据** ```sql SELECT * FROM 表名 WHERE 条件; ``` 4. **更新数据** ```sql UPDATE 表名 SET 列=新值 WHERE 条件; ``` 5. **删除数据** ```sql DELETE FROM 表名 WHERE 条件; ``` --- #### **五、索引与性能优化** 1. **创建索引** ```sql CREATE INDEX 索引名 ON 表名 (列名); ``` 2. **查看表结构** ```sql \d+ 表名 ``` --- #### **六、备份与恢复** 1. **逻辑备份(导出数据库)** ```bash gs_dump -U 用户名 -W 密码 -f 备份文件名.sql 数据库名 ``` 2. **恢复备份** ```bash gs_restore -U 用户名 -W 密码 -d 目标数据库名 备份文件名.sql ``` --- #### **七、事务控制** ```sql BEGIN; -- 开启事务 COMMIT; -- 提交事务 ROLLBACK; -- 回滚事务 ``` --- #### **八、系统维护** 1. **查看数据库状态** ```sql SELECT * FROM pg_stat_activity; -- 查看当前连接会话 ``` 2. **清理与优化** ```sql VACUUM FULL; -- 回收空间并优化性能 ``` --- #### **注意事项** 1. **权限问题**:操作前需确保用户有对应权限[^1]。 2. **密码安全**:连接时避免明文密码暴露,建议通过交互输入。 3. **备份重要性**:生产环境务必定期备份[^1]。 4. **兼容性**:部分SQL语法可能与标准PostgreSQL存在差异,需参考官方文档[^1]。 --- §§ 相关问题 §§ 1. 如何监控openGauss数据库的运行性能? 2. openGauss中如何实现用户权限的细粒度控制? 3. 备份与恢复操作时需要注意哪些兼容性问题? 4. openGauss与PostgreSQL在SQL语法上的主要差异有哪些?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值