如何让低权限MySQL用户查看全量PROCESSLIST统计信息?
解决MySQL低权限用户无法查看全量PROCESSLIST的问题
这是MySQL默认的安全限制导致的——普通用户默认只能看到自己发起的数据库连接进程,所以你的低权限用户返回的结果只有它自己的那1个进程。要解决这个问题,只需要给这个低权限用户授予PROCESS全局权限就可以了,这个权限仅允许用户查看所有进程的列表,不会赋予任何修改数据或配置的权限,完全符合你的安全需求。
具体操作步骤
- 用拥有root权限的账号登录到MySQL服务器上
- 执行授权语句(替换成你的实际用户名和外部服务器的IP/主机名):
如果允许这个用户从任意主机连接,可以把主机名改成GRANT PROCESS ON *.* TO '你的低权限用户名'@'外部服务器IP或主机名';%,但建议限制为指定的外部服务器IP,更安全。 - 刷新权限使设置生效:
FLUSH PRIVILEGES;
优化你的查询语句
另外,你原来的查询可以合并成一个更简洁的语句,一次就能获取总进程数和非Sleep的进程数:
SELECT COUNT(*) AS total_process_count, SUM(CASE WHEN COMMAND != 'Sleep' THEN 1 ELSE 0 END) AS non_sleep_process_count FROM information_schema.PROCESSLIST;
完成授权后,再用你的低权限用户从外部服务器执行查询,就能得到正确的全量进程统计数据了。
内容的提问来源于stack exchange,提问作者Chris Crozz
相关产品推荐
相关产品推荐

