更新时间:2026-05-16 GMT+08:00
分享

用户与权限

表1 M-Compatibility与GaussDB的语法差异

序号

语法说明

概述

M-Compatibility与GaussDB的差异

1

CREATE ROLE

创建一个角色。

在M-Compatibility中,

不支持指定涉及以下关键字的选项:ENCRYPTED、UNENCRYPTED、RESOURCE POOL、PERM SPACE、TEMP SPACE、SPILL SPACE。

2

CREATE USER

创建一个用户。

3

CREATE GROUP

创建一个新用户组。CREATE GROUP是CREATE ROLE的别名,不推荐使用。

4

ALTER ROLE

修改角色属性。

5

ALTER USER

修改用户属性。

6

ALTER GROUP

修改一个用户组的属性。

-

7

DROP ROLE

删除角色。

-

8

DROP USER

删除用户。

-

9

DROP GROUP

删除用户组。

-

10

DROP OWNED

删除一个数据库角色所拥有的数据库对象。

-

11

REASSIGN OWNED

修改数据库对象的属主。

M-Compatibility中不支持该语法。

12

GRANT

对角色和用户进行授权操作。

M-Compatibility中不支持授予或回收函数、存储过程、表空间、DATABASE LINK等对象的权限。

13

REVOKE

用于撤销一个或多个角色的权限。

14

ALTER DEFAULT PRIVILEGES

设置应用于将来创建的对象的权限(这不会影响分配到已有对象中的权限)。

M-Compatibility中不支持该语法。

  • MySQL中通过'dbname.*'表示模式层级的授权对象;在M-Compatibility中,使用'{DATABASE | SCHEMA} dbname'表示模式层级的授权对象。
  • MySQL中用户名为两部分:用户名@主机名;M-Compatibility当前仅支持用户名。
  • MySQL支持在GRANT赋权语法中修改用户验证,安全连接,资源参数属性,即auth_option、tls_option和resource option;M-Compatibility赋权语法中不支持以上特性,需使用CREATE USER、ALTER USER设置用户相关属性。
  • MySQL支持用户代理赋权,GRANT PROXY ON主要用于对多个用户进行统一的权限管理。MySQL5.7未提供角色机制,而在MySQL8.0和M-Compatibility中都提供了角色机制。角色能满足用户对于多个用户权限统一管控的目标,可以替代GRANT PROXY ON。
  • M-Compatibility拥有public的概念,所用用户都拥有public的权限,部分系统表、系统视图可供所有用户查询。用户可以对public所拥有的权限进行grant和revoke;MySQL中,新创建的用户只拥有全局的usage权限,这个权限很小,几乎为0,只有连接数据库和查询information_schema 数据库的权限。
  • M-Compatibility中,对象的所有者缺省具有该对象上的所有权限,出于安全考虑所有者可以舍弃部分权限,但ALTER、DROP、COMMENT、INDEX、VACUUM以及对象的可再授予权限属于所有者固有的权限,隐式拥有;MySQL中,没有owner的概念,即使用户创建了表,如果没赋予用户对应权限,那么用户也不能对其创建的表进行IUD等操作。
  • 在MySQL中,USAGE实际上表示无权限,所用用户都拥有该权限,当执行revoke或grant usage时,实际上不会进行任何修改;在M-Compatibility中,USAGE权限如下:
    • 对于模式,USAGE允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名称。
    • 对于序列,USAGE允许使用nextval函数。
  • 在M-Compatibility中,支持给用户设置管理员角色,包括系统管理员(SYSADMIN)、安全管理员(CREATEROLE)、审计管理员(AUDITADMIN)、监控管理员(MONADMIN)、运维管理员(OPRADMIN)、安全策略管理员(POLADMIN)。默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。三权分立后,系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力,即不再拥有创建角色和用户的权限,也不再拥有查看和维护数据库审计日志的权限;在MySQL中,不支持该用户设置管理员角色,也没有三权分立相关设计。
  • 在M-Compatibility中,可以给用户赋予ANY权限,表示用户能够在非系统模式下拥有对应的权限,包括CREATE ANY TABLE、SELECT ANY TABLE、CREATE ANY INDEX等;在MySQL中,不支持ANY权限的赋予。
  • MySQL中提供SHOW GRANTS查询用户权限;M-Compatibility中,可以通过gsql客户端元命令'\l+'、'\dn+' 、'\dp'查询权限信息,也可以通过查询pg_namespace、pg_class、pg_attribute等系统表的权限相关字段查询权限信息。
  • MySQL中数据库、表、列被删除时,相关的授权信息在系统表中依然保留,如果重新创建同名对象用户依然拥有权限;M-Compatibility中当数据库、表、列被删除时,相关的授权信息会被删除,在重新创建同名对象后需要重新授权。
  • MySQL在授予数据库层级的权限时,支持‘_’和‘%’对数据库名进行模糊匹配;M-Compatibility不支持对象名模糊匹配,‘_’或‘%’等特殊字符被识别为普通字符。
  • MySQL中,GRANT语句中指定用户不存在时默认会创建该账户(此特性已在MySQL8.0中移除);M-Compatibility不支持给未创建用户赋权。

相关文档