[TOC] # 管理同义词 通常是为了管理权限方便,因为同义词可以隐藏另外一个数据对象的所有者权限。 ## 创建同义词 您可以使用`CREATE SYNONYM`语句来创建同义词。 创建同义词时: * 如果在当前数据库创建私有同义词,则当前用户需要具备`CREATE SYNONYM`权限。 * 如果在非当前数据库创建私有同义词,则当前用户需要具备以下权限: * MySQL 模式:`CREATE SYNONYM`权限 * 如果创建公共同义词,则当前用户需要具备以下权限: * MySQL 模式:`CREATE SYNONYM`权限 * 创建同义词的对象可以不存在,当前用户也不需要具有该对象的访问权限。 创建同义词的语法格式如下: * MySQL 模式 ~~~ CREATE [ OR REPLACE ] [ PUBLIC ] SYNONYM [ DATABASE. ]synonym FOR [ DATABASE. ]object; ~~~ MySQL 模式下`CREATE SYNONYM`语句的更多信息,请参见《SQL 参考》文档中的[CREATE SYNONYM](https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/create-synonym)章节。 示例: * 创建一个私有同义词。 ~~~ obclient> CREATE TABLE test(c1 int); Query OK, 0 rows affected (0.18 sec) obclient> CREATE SYNONYM s1 for test; Query OK, 0 rows affected (0.05 sec) obclient> INSERT INTO s1 VALUES(1); Query OK, 1 row affected (0.02 sec) obclient> SELECT * FROM s1; +------+ | c1 | +------+ | 1 | +------+ 1 row in set (0.01 sec) ~~~ * 创建一个公共同义词。 ~~~ obclient> CREATE PUBLIC SYNONYM syn_pub FOR test; Query OK, 0 rows affected (0.03 sec) obclient> SELECT * FROM syn_pub; +------+ | c1 | +------+ | 1 | +------+ 1 row in set (0.01 sec) ~~~ ## 删除同义词 您可以使用`DROP SYNONYM`语句来删除不需要使用的同义词。 删除同义词时: * 如果删除的是私有同义词,则需要保证待删除的同义词在对应的数据库下,且当前用户需要具备以下权限: * MySQL 模式的租户:`CREATE SYNONYM`权限 * 如果删除的是公共同义词,则当前用户需要具备以下权限: * MySQL 模式的租户:`CREATE SYNONYM`权限 同时,在删除时,必须指定`PUBLIC`关键字,并且不能指定数据库。 删除同义词的语法格式如下: * MySQL 模式 ~~~ DROP [PUBLIC] SYNONYM [ DATABASE. ]synonym; ~~~ MySQL 模式下`DROP SYNONYM`语句的更多信息,请参见《SQL 参考》文档中的[DROP SYNONYM](https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/drop-synonym)章节。 示例: * 删除一个私有同义词。 ~~~ obclient> DROP SYNONYM test.s1; Query OK, 0 rows affected (0.03 sec) ~~~ * 删除一个公共同义词。 ~~~ obclient> DROP PUBLIC SYNONYM syn_pub; Query OK, 0 rows affected (0.02 sec) ~~~