5.7.3. MySQL提供的权限

账户权限信息被存储在mysql 数据库的user 、db 、host 、tables_priv 、columns_priv 和procs_priv 表 中。在MySQL 启动时并在5.7.7节,“权限更改何时生效” 所 说的情况时,服务器将这些数据库表内容读入内存。

GRANT 和REVOKE 语句所用的涉及权限的名称显示在下表,还有在授权表中每个权 限的表列名称和每个权限有关的上下文。关于每个权限的含义相关的详细信息参见13.5.1.3节,“GRANT和REVOKE语法”

privilege_8
privilege_9

当从早期的没有CREATE VIEW 、SHOW VIEW 、CREATE ROUTINE 、ALTER ROUTINE 和EXECUTE 权限的版本的MySQL 中升级时,要想使用这 些权限,你必须使用MySQL 分发提供的mysql_fix_privilege_tables 脚 本升级 授权表。参见2.10.2节,“升级授权表”

如果启用了二进制记录,要想创建或修改保存的程序,你还需要SUPER 权限,详细描述见20.4节,“存储子 程序和触发程序的二进制日志功能”

通过CREATE 和DROP 权限,你可以创建新数据库和表,或删除( 移 掉) 已有数据库和表。如果你将 mysql 数 据库中的 DROP 权限授予某用户,用 户可以删掉MySQL 访问权限保存的数据库。

SELECT 、INSERT 、UPDATE 和DELETE 权 限允许你在一个数据库现有的表上实施操作。

SELECT 语句只有在他们真正从一个表中检索行时才需要SELECT 权限。一些SELECT 语 句不访问表,甚至没有任何到服务器上的数据库里的存取任何东西的许可。例如,你可使用mysql 客 户端作为一个简单的计算器来评估未引用表的表达式:

mysql> 
SELECT 1+1;


mysql> 
SELECT PI()*2;


INDEX 权限允许你创建或删除索引。INDEX 适用已有表。 如 果你具有某个表的CREATE 权限,你可以在CREATE TABLE 语句中包括索引定义。

通过ALTER 权限,你可以使用ALTER TABLE 来更改表的结构和重新命名表。

需要CREATE ROUTINE 权限来创建保存的程序(函数和程序),ALTER ROUTINE 权限来更改和删除保存的程序,EXECUTE 来执行保存的程序。

GRANT 权限允许你把你自己拥有的那些权限授给其他的用户。可以用于数据库、表和保存的程序。

FILE 权限给予你用LOAD DATA INFILE 和SELECT ... INTO OUTFILE 语句读和写服务器上的文件,任何被授予FILE 权限的用户都能读或写MySQL 服务器能读或写的任何文件。( 说 明用户可以读任何数据库目录下的文件,因为服务器可以访问这些文件)。 FILE 权限允许用户在MySQL 服务器具有写权限的目录下创建新文件。不能 覆盖已有文件。

其余的权限用于管理性操作,它使用mysqladmin 程序或SQL 语 句实施。下表显示每个管理性权限允许你执行的mysqladmin 命令:

privilege_10

reload 命令告诉服务器将授权表重新读入内存。flush-privileges 是reload 的 同义词,refresh 命令清空所有表并打开并关闭记录文件,其它flush-xxx 命 令执行类似refresh 的功能,但是范围更有限,并且在某些情况下可能更好用。例如,如果你只是想清空记录文件,flush-logs 比refresh 是 更好的选择。

shutdown 命令关掉服务器。只能从mysqladmin 发 出命令。没有相应的SQL 语句。

processlist 命令显示在服务器内执行的线程的信息(即其它账户相关的客户端执行的语句)。 kill 命 令杀死服务器线程。你总是能显示或杀死你自己的线程,但是你需要 PROCESS 权限来显示或杀死其 他用户和 SUPER 权限启动的线程。 参见13.5.5.3节,“KILL语法”

拥有CREATE TEMPORARY TABLES 权限 便可以使用CREATE TABLE 语句中的关键字TEMPORARY 。

拥有LOCK TABLES 权限 便可以直接使用LOCK TABLES 语句来锁定你拥有SELECT 权限的表。包括使用写锁定,可以防止他人读锁定的表。

拥有REPLICATION CLIENT 权限 便可以使用SHOW MASTER STATUS 和SHOW SLAVE STATUS 。

REPLICATION SLAVE 权限应授予从服务器所使用的将当前服务器连接为主服务器的账户 。 没有这个权限,从服务器不能发出对主服务器上的数据库所发出的更新请求。

拥有SHOW DATABASES 权限 便允许账户使用SHOW DATABASE 语句来查看数据库名。没有该权限的账户只能看到他们具有部分权限的数据库, 如果数据库用--skip-show-database 选 项启动,则根本不能使用这些语句。请注意全局权限指数据库的权限。

总的说来,只授予权限给需要他们的那些用户是好主意,但是你应该在授予FILE 和管理权限时试验特定的警告:

  • FILE 权限可以被滥用于将服务器主机上MySQL 能读取的任何文件读入到数据库表中。包 括任何人可读的文件和服务器数据目录中的文件。可以使用SELECT 访问数据库表,然后将其内容传输到客户端上。
  • GRANT 权限允许用户将他们的权限给其他用户。有不同的权限并有GRANT 权限的2 个 用户可以合并权限。
  • ALTER 权限可以用于通过重新命名表来推翻权限系统。
  • SHUTDOWN 权限通过终止服务器可以被滥用完全拒绝为其他用户服务。
  • PROCESS 权限能被用来察看当前执行的查询的明文文本,包括设定或改变密码的查询。
  • SUPER 权限能用来终止其它用户或更改服务器的操作方式。
  • 授给mysql 数据库本身的权限能用来改变密码和其他访问权限信息。密码被加密存储,所以恶意的用户不能简单 地读取他们以知道明文密码。然而,具有user 表Password 列写访问权限的用户可以更改账户 的密码,并可以用该账户连接MySQL 服务器。

有一些事情你不能用MySQL 权限系统做到:

  • 你不能明显地指定某个给定的用户应该被拒绝访问。即,你不能明显地匹配用户然后拒绝连接。
  • 你不能指定用户有权创建立或删除数据库中的表,但不能创建或删除数据库本身。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值