mysql 数据库进行用户权限管理

首先先了解数据库权限

Privilege Grant Table Column Context
ALL [PRIVILEGES] Synonym for “all privileges” Server administration
ALTER Alter_priv Tables
ALTER ROUTINE Alter_routine_priv Stored routines
CREATE Create_priv Databases, tables, or indexes
CREATE ROLE Create_role_priv Server administration
CREATE ROUTINE Create_routine_priv Stored routines
CREATE TABLESPACE Create_tablespace_priv Server administration
CREATE TEMPORARY TABLES Create_tmp_table_priv Tables
CREATE USER Create_user_priv Server administration
CREATE VIEW Create_view_priv Views
DELETE Delete_priv Tables
DROP Drop_priv Databases, tables, or views
DROP ROLE Drop_role_priv Server administration
EVENT Event_priv Databases
EXECUTE Execute_priv Stored routines
FILE File_priv File access on server host
GRANT OPTION Grant_priv Databases, tables, or stored routines
INDEX Index_priv Tables
INSERT Insert_priv Tables or columns
LOCK TABLES Lock_tables_priv Databases
PROCESS Process_priv Server administration
PROXY See proxies_priv table Server administration
REFERENCES References_priv Databases or tables
RELOAD Reload_priv Server administration
REPLICATION CLIENT Repl_client_priv Server administration
REPLICATION SLAVE Repl_slave_priv Server administration
SELECT Select_priv Tables or columns
SHOW DATABASES Show_db_priv Server administration
SHOW VIEW Show_view_priv Views
SHUTDOWN Shutdown_priv Server administration
SUPER Super_priv Server administration
TRIGGER Trigger_priv Tables
UPDATE Update_priv Tables or columns
USAGE Synonym for “no privileges” Server administration

静态权限说明

与在运行时定义的动态特权相反,服务器内置了静态特权。以下列表描述了MySQL中可用的每个静态特权。

特定的SQL语句可能具有比此处指示的更具体的特权要求。如果是这样,则所讨论语句的描述将提供详细信息。

  • ALL, ALL PRIVILEGES

    这些特权说明符是“在给定特权级别可用的所有特权” (除外GRANT OPTION)的简写。例如,ALL在全局或表级别进行授予分别授予所有全局特权或所有表级别特权。

  • ALTER

    允许使用该ALTER TABLE语句更改表的结构。 ALTER TABLE还需要 CREATE和 INSERT特权。重命名表需要ALTER和 DROP对旧表, CREATE以及 INSERT对新表。

  • ALTER ROUTINE

    允许使用更改或删除存储例程(存储过程和函数)的语句。对于属于授予特权的范围内的例程,而不是为其指定用户的用户,该例程 DEFINER还允许访问例程定义以外的例程属性。

  • CREATE

    允许使用创建新数据库和表的语句。

  • CREATE ROLE

    启用CREATE ROLE语句的使用。(该CREATE USER特权还允许使用该 CREATE ROLE语句。)请参见 第6.2.10节“使用角色”

    CREATE ROLE和 DROP ROLE特权是不是强大CREATE USER ,因为它们只能用于创建和删除帐户。它们不能用作CREATE USER修改帐户属性或重命名帐户。请参阅 用户和角色互换性

  • CREATE ROUTINE

    允许使用创建存储例程(存储过程和函数)的语句。对于属于授予特权的范围内的例程,而不是为其指定用户的用户,该例程 DEFINER还允许访问例程定义以外的例程属性。

  • CREATE TABLESPACE

    允许使用创建,更改或删除表空间和日志文件组的语句。

  • CREATE TEMPORARY TABLES

    使用该CREATE TEMPORARY TABLE 语句启用临时表的创建 。

    会话创建临时表后,服务器将不再对该表执行任何特权检查。所述创建会话可以在桌子上进行任何操作,例如DROP TABLE, INSERT, UPDATE,或 SELECT。有关更多信息,请参见第13.1.20.2节“ CREATE TEMPORARY TABLE语句”

  • CREATE USER

    允许使用的ALTER USERCREATE ROLE, CREATE USER, DROP ROLE, DROP USER, RENAME USER,和 REVOKE ALL PRIVILEGES语句。

  • CREATE VIEW

    启用CREATE VIEW语句的使用。

  • DELETE

    使行可以从数据库的表中删除。

  • DROP

    允许使用删除(删除)现有数据库,表和视图的语句。该 DROP权限才能使用该ALTER TABLE ... DROP PARTITION 语句的分区表。该 DROP也需要特权TRUNCATE TABLE

  • DROP ROLE

    启用DROP ROLE 语句的使用。(该CREATE USER 特权还允许使用该DROP ROLE语句。)请参见第6.2.10节“使用角色”

    CREATE ROLE和 DROP ROLE特权是不是强大CREATE USER ,因为它们只能用于创建和删除帐户。它们不能用作CREATE USER修改帐户属性或重命名帐户。请参阅 用户和角色互换性

  • EVENT

    支持使用为事件计划程序创建,更改,删除或显示事件的语句。

  • EXECUTE

    允许使用执行存储例程(存储过程和函数)的语句。对于属于授予特权的范围内的例程,而不是为其指定用户的用户,该例程 DEFINER还允许访问例程定义以外的例程属性。

  • FILE

    影响以下操作和服务器行为:

    • 使用LOAD DATAand SELECT ... INTO OUTFILE语句和 LOAD_FILE()函数启用在服务器主机上的读写文件。拥有FILE 特权的用户可以读取服务器主机上世界可读或MySQL服务器可读的任何文件。(这意味着用户可以读取任何数据库目录中的任何文件,因为服务器可以访问任何这些文件。)

    • 允许在MySQL服务器具有写访问权的任何目录中创建新文件。这包括服务器的数据目录,该目录包含实现特权表的文件。

    • 允许对语句使用DATA DIRECTORYor INDEX DIRECTORY表选项 CREATE TABLE

    作为安全措施,服务器不会覆盖现有文件。

    要限制可读写文件的位置,请将 secure_file_priv系统变量设置为特定目录。请参见 第5.1.8节“服务器系统变量”

  • GRANT OPTION

    使您可以授予自己拥有的特权或从其他用户撤消这些特权。

  • INDEX

    允许使用创建或删除(删除)索引的语句。INDEX适用于现有表。如果您拥有CREATE表的 特权,则可以在CREATE TABLE语句中包括索引定义 。

  • INSERT

    允许将行插入数据库的表中。 INSERT还需要对ANALYZE TABLE, OPTIMIZE TABLE和 REPAIR TABLE 表维护语句。

  • LOCK TABLES

    允许使用显式LOCK TABLES语句来锁定您具有SELECT特权的表。这包括写锁定的使用,这可以防止其他会话读取锁定的表。

  • PROCESS

    PROCESS权限控制访问有关服务器内执行的线程的信息(即,有关语句的信息由会话执行)。可使用以下SHOW PROCESSLIST 语句访问使用语句,mysqladmin processlist 命令, INFORMATION_SCHEMA.PROCESSLIST 表和“性能模式” processlist表可用的线程信息:

    • 使用该PROCESS 特权,用户可以访问有关所有线程的信息,甚至包括属于其他用户的信息。

    • 没有PROCESS 特权,非匿名用户有权访问有关其自己线程的信息,而其他用户则不能访问线程,并且匿名用户无权访问线程信息。

    笔记

    Performance Schema threads表还提供线程信息,但是表访问使用不同的特权模型。请参见 第27.12.20.7节“线程表”

    PROCESS特权还允许使用该SHOW ENGINE语句,访问 INFORMATION_SCHEMA InnoDB表(名称以开头的表INNODB_),以及(从MySQL 8.0.21开始)访问INFORMATION_SCHEMA FILES表。

  • PROXY

    使一个用户可以模拟或成为另一用户。请参见第6.2.18节“代理用户”

  • REFERENCES

    创建外键约束需要REFERENCES父表具有 特权。

  • RELOAD

    RELOAD实现以下操作:

    • 使用该FLUSH 语句。

    • 使用中mysqladmin等效于命令FLUSH 操作:flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh,和 reload

      reload命令告诉服务器将授权表重新加载到内存中。 flush-privileges是的同义词 reload。该 refresh命令关闭并重新打开日志文件,并刷新所有表。其他 命令执行与相似的功能 ,但更具体,在某些情况下可能更可取。例如,如果您只想刷新日志文件,那 是比更好的选择 。 flush-xxxrefreshflush-logsrefresh

    • 使用执行各种操作的mysqldump选项FLUSH: --flush-logs和 --master-data

    • 使用的RESET MASTER 和RESET REPLICA | SLAVE陈述。

  • REPLICATION CLIENT

    允许使用的SHOW MASTER STATUS, SHOW REPLICA | SLAVE STATUS和 SHOW BINARY LOGS语句。

  • REPLICATION SLAVE

    启用该帐户已作出数据库复制源服务器上,使用请求更新 SHOW REPLICAS | SHOW SLAVE HOSTSSHOW RELAYLOG EVENTSSHOW BINLOG EVENTS语句。要使用mysqlbinlog选项 --read-from-remote-server (-R)和, 也需要此特权--read-from-remote-master。将此特权授予副本使用以连接到当前服务器作为其复制源服务器的帐户。

  • SELECT

    允许从数据库的表中选择行。 SELECT语句SELECT仅在实际访问表时才需要 特权。有些 SELECT语句不访问表,并且可以在未经任何数据库许可的情况下执行。例如,您可以使用 SELECT一个简单的计算器来评估不引用表的表达式:

    <span style="color:#555555"><span style="color:#000000"><code class="language-sql"><span style="color:#0077aa">SELECT</span> <span style="color:#990055">1</span><span style="color:#a67f59">+</span><span style="color:#990055">1</span><span style="color:#999999">;</span>
    <span style="color:#0077aa">SELECT</span> <span style="color:#dd4a68">PI</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#a67f59">*</span><span style="color:#990055">2</span><span style="color:#999999">;</span></code></span></span>

    SELECT其他读取列值的语句也需要 此特权。例如,对于 语句SELECTcol_name=expr 赋值右侧引用的UPDATE列或在或 语句的WHERE子句中 命名的 列,则需要 。 DELETEUPDATE

    SELECT是需要与用于表或视图特权 EXPLAIN,包括在视图定义任何潜在的表。

  • SHOW DATABASES

    通过发出该SHOW DATABASE语句,使帐户能够查看数据库名称 。没有此特权的帐户只能看到具有某些特权的数据库,并且如果使用该--skip-show-database选项启动服务器,则根本无法使用该语句 。

    警告

    因为任何静态全局特权都被认为是所有数据库的特权,所以任何静态全局特权都使用户可以查看SHOW DATABASES或通过查看的SCHEMATA表来查看所有数据库名称 INFORMATION_SCHEMA,但在数据库级别受部分吊销限制的数据库除外。

  • SHOW VIEW

    启用SHOW CREATE VIEW语句的使用。与结合使用的视图也需要此特权EXPLAIN

  • SHUTDOWN

    允许使用SHUTDOWN andRESTART语句, mysqladmin shutdown命令和 mysql_shutdown()C API函数。

  • SUPER

    SUPER是一项强大而深远的特权,不应轻易掉以轻心。如果帐户只需要执行一部分 SUPER操作,则可以通过授予一个或多个动态特权来实现所需的特权集,而每个特权都赋予更多有限的功能。请参阅 动态特权描述

    笔记

    SUPER已被弃用,您应该期望它在MySQL的将来版本中被删除。请参阅将 帐户从SUPER迁移到动态特权

    SUPER 影响以下操作和服务器行为:

    SUPER 如果启用了二进制日志记录,则 可能还需要特权来创建或更改存储的功能,如 第25.7节“存储的程序二进制日志记录”中所述

  • TRIGGER

    启用触发器操作。您必须具有此特权才能使表创建,删除,执行或显示该表的触发器。

    当触发器被激活(由谁拥有特权执行用户INSERT, UPDATE或 DELETE与触发器关联的表的语句),触发器执行要求谁定义触发器的用户仍然有TRIGGER对表的特权。

  • UPDATE

    使行可以在数据库的表中更新。

  • USAGE

    此特权说明符代表“无特权。”用于全局级别, GRANT用于指定子句,例如WITH GRANT OPTION不在特权列表中命名特定的帐户特权。 SHOW GRANTS显示 USAGE以指示帐户在特权级别没有特权。

默认身份验证插件。这些值是允许的:

猜你喜欢

转载自blog.csdn.net/wang0112233/article/details/115182252