MySQL的用户权限

在MySQL内部,服务器将权限信息存储在mysql数据库的授权表中(即,在名为的数据库中mysql)。

MySQL服务器在启动时将这些表的内容读取到内存中,并基于授予表的内存副本对访问控制做出决定。MySQL特权系统确保所有用户只能执行允许的操作。

作为用户,当您连接到MySQL服务器时,您的身份由连接的主机和您指定的用户名确定。在连接后发出请求时,系统将根据您的身份和您想要执行的操作授予权限。因为没有理由认为给定的用户名属于所有主机上的同一个人,所以MySQL会将您的主机名和用户名都视为识别您的身份。

当您运行连接到服务器的客户端程序时,MySQL访问控制涉及两个阶段:

  • 阶段1:服务器根据您的身份接受或拒绝连接,以及您是否可以通过提供正确的密码来验证您的身份。
  • 阶段2:假设您可以连接,服务器会检查您发出的每条语句,以确定您是否有足够的权限来执行它。例如,如果尝试从数据库中的表中选择行或从数据库中删除表,则服务器会验证您是否具有SELECT该表的DROP权限或数据库的权限。

有关帐户权限的信息存储在mysql库的user、db、tables_priv、columns_priv、和procs_priv表里面。
MySQL的权限列表

zabbix监控上,监控mysql的基本权限:

grant select,process,replication client on *.* to 'zabbix'@'localhost';

通过process这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程。

拥有replication client权限可以执行:

SHOW MASTER STATUS
SHOW SLAVE STATUS
SHOW BINARY LOGS

msyql replication的权限:

grant replication slave on *.* to 'repl'@'localhost' indentified by 'password';

标签: MySQL

添加新评论