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';