权限分类
本文主要介绍 seekdb 的权限分类。
分类
seekdb 的权限分为了 3 个级别:
- 全局权限:可以影响整个 seekdb 的权限,例如:修改系统设置、访问所有的表等权限。
- 数据库权限:可以影响某个特定数据库下所有对象的权限,例如:在对应数据库下创建删除表,访问表等权限。
- 对象权限:可以影响某个特定对象的权限,例如:访问一个特定的表、视图或索引的权限。
当前 seekdb 中相关的权限列表如下表所示。
| 权限类别 | 权限 | 描述 |
|---|---|---|
| 对象权限 | CREATE | 确定用户是否可以执行 CREATE TABLE 语句。 |
| 对象权限 | SELECT | 确定用户是否可以查询表中所有列或指定列的数据。 |
| 对象权限 | INSERT | 确定用户是否可以在表中的所有列或指定列中插入数据。 |
| 对象权限 | UPDATE | 确定用户是否可以更新表中所有列或指定列的数据。 |
| 对象权限 | DELETE | 确定用户是否可以删除现有数据。 |
| 对象权限 | DROP | 确定用户是否可以执行 DROP TABLE、DROP VIEW 等语句。 |
| 对象权限 | INDEX | 确定用户是否可以创建和删除表索引。 |
| 对象权限 | ALTER | 确定用户是否可以执行 RENAME TABLE、ALTER TABLE 等语句。 |
| 对象权限 | CREATE VIEW | 确定用户是否可以创建视图。 |
| 对象权限 | SHOW VIEW | 确定用户是否可以查看视图或了解视图如何执行。 |
| 对象权限 | REFERENCES | 确定用户是否可以创建外键。为表创建外键时,需要有父表的 REFERENCES 权限。 |
| 对象权限 | TRIGGER | 确定用户是否可以激活触发器操作的权限。创建、查看、删除触发器时需要该权限。 |
| 数据库权限 | SELECT | 确定用户是否可以查询表中的数据。 |
| 数据库权限 | INSERT | 确定用户是否可以在表中插入行数据。 |
| 数据库权限 | UPDATE | 确定用户是否可以修改现有数据。 |
| 数据库权限 | DELETE | 确定用户是否可以删除现有数据。 |
| 数据库权限 | CREATE | 确定用户是否可以执行 CREATE DATABASE、CREATE TABLE、CREATE SEQUENCE、CREATE OUTLINE 等语句。 |
| 数据库权限 | DROP | 确定用户是否可以执行 DROP DATABASE、DROP TABLE、DROP VIEW、DROP SEQUENCE、DROP OUTLINE 等语句。 |
| 数据库权限 | INDEX | 确定用户是否可以创建和删除表索引。 |
| 数据库权限 | ALTER | 确定用户是否可以执行 ALTER DATABASE、RENAME TABLE、ALTER TABLE、ALTER SEQUENCE、ALTER OUTLINE 等语句。 |
| 数据库权限 | CREATE VIEW | 确定用户是否可以创建视图。 |
| 数据库权限 | SHOW VIEW | 确定用户是否可以查看视图或了解视图如何执行。 |
| 数据库权限 | CREATE ROUTINE | 确定用户是否可以创建 Procedure 和 Function。 |
| 数据库权限 | ALTER ROUTINE | 确定用户是否可以修 改或删除 Procedure 和 Function。 |
| 数据库权限 | EXECUTE | 确定用户是否可以执行 Procedure 和 Function。 |
| 数据库权限 | REFERENCES | 确定用户是否可以创建外键。 |
| 数据库权限 | TRIGGER | 确定用户是否可以激活触发器操作的权限。创建、查看、删除触发器时需要该权限。 |
| 全局权限 | CREATE | 确定用户是否可以执行 CREATE DATABASE、CREATE TABLE、CREATE SEQUENCE、CREATE OUTLINE 等语句。 |
| 全局权限 | ALTER | 确定用户是否可以执行 ALTER DATABASE、RENAME TABLE、ALTER TABLE、ALTER SEQUENCE、ALTER OUTLINE 等语句。 |
| 全局权限 | SELECT | 确定用户是否可以查询表中的数据。 |
| 全局权限 | INSERT | 确定用户是否可以在表中插入行数据。 |
| 全局权限 | UPDATE | 确定用户是否可以修改现有数据。 |
| 全局权限 | DELETE | 确定用户是否可以删除现有数据。 |
| 全局权限 | DROP | 确定用户是否可以执行 DROP DATABASE、DROP TABLE、DROP VIEW、DROP SEQUENCE、DROP OUTLINE 等语句。 |
| 全局权限 | INDEX | 确定用户是否可以创建和删除表索引。 |
| 全局权限 | CREATE VIEW | 确定用户是否可以创建视图。 |
| 全局权限 | SHOW VIEW | 确定用户是否可以查看视图或了解视图如何执行。 |
| 全局权限 | REFERENCES | 确定用户是否可以创建外键。 |
| 全局权限 | ALTER SYSTEM | 执行 ALTER SYSTEM 命令的权限。 |
| 全局权限 | CREATE DATABASE LINK | 创建数据库链接的权限。 |
| 全局权限 | DROP DATABASE LINK | 删除数据库链接的权限。 |
| 全局权限 | CREATE USER | 确定用户是否可以执行 CREATE USER、ALTER USER、DROP USER、CREATE ROLE、DROP ROLE 等语句。 |
| 全局权限 | CREATE ROUTINE | 确定用户是否可以创建 Procedure 和 Function。 |
| 全局权限 | ALTER ROUTINE | 确定用户是否可以修改或删除 Procedure 和 Function。 |
| 全局权限 | CREATE ROLE | 确定用户是否可以执行 CREATE ROLE 语句。 |
| 全局权限 | DROP ROLE | 确定用户是否可以执行 DROP ROLE 语句。 |
| 全局权限 | EXECUTE | 确定用户是否可以执行 Procedure 和 Function。 |
| 全局权限 | PROCESS | 确定用户是否可以通过 SHOW PROCESSLIST 命令查看其他用户的进程。 |
| 全局权限 | TRIGGER | 确定用户是否可以激活触发器操作的权限。创建、查看、删除触发器时需要该权限。 |
| 全局权限 | SHOW DB | 确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库。 |
| 全局权限 | SHUTDOWN | 确定用户是否可以执行 mysqladmin shutdown 命令的权限。支持通过 GRANT、REVOKE 语句为用户授予、撤销该权限,但授予权限后,该权限不会生效。 |
| 全局权限 | RELOAD | 确定用户是否可以执行 Flush 操作的权限。 支持通过 GRANT、REVOKE 语句为用户授予、撤销该权限,但授予权限后,该权限不会 生效。 |
| 全局权限 | FILE | 确定用户是否可以执行 SELECT INTO OUTFILE 和 LOAD DATA INFILE 命令。 |
| 全局权限 | SUPER | 确定用户是否可以执行某些强大的管理功能,例如通过 KILL 命令删除用户进程,使用 SET GLOBAL 修改全局 MySQL 变量,执行关于复制和日志的各种命令。 |
| 全局权限 | GRANT OPTION | 允许用户将他们所拥有的权限授予其他用户,通常与其他权限(如 SELECT、INSERT、UPDATE 等)一起使用。 |
| 全局权限 | ALL PRIVILEGES | 表示用户拥有数据库中的所有可用权限(除了 GRANT OPTION/ENCRYPT/DECRYPT 之外)。 |
| 全局权限 | PROXY | 允许一个用户以另一个用户的身份进行连接和操作,例如,在不共享密码的情况下允许用户 A 可以授予用户 B 以用户 A 的身份连接和操作的权限,使用场景例如应用程序需要使用不同权限级别的账户、实现用户权限委派等。 |
| 数据目录级权限 | CREATE CATALOG | 确定用户是否可以执行 CREATE EXTERNAL CATALOG、DROP CATALOG 语句。 |
| 数据目录级权限 | USE CATALOG | 确定用户是否可以执行 SET CATALOG、SHOW CATALOGS、SHOW CREATE CATALOG、SELECT FROM CATALOG 语句。 |