如何在MySQL控制台仅获取Queries per second avg且不暴露密码?
安全获取MySQL的Slow queries和Queries per second avg指标(不暴露密码)
我来给你几个实用靠谱的方案,完美解决你的需求:
方案1:用mysql_config_editor加密存储登录信息(推荐长期使用)
这是MySQL官方提供的安全工具,能把你的登录密码加密存在本地文件里,绝对不会在命令行或历史记录里明文暴露:
- 先执行配置命令,按提示输入密码即可:
mysql_config_editor set --login-path=local --host=localhost --user=你的用户名 --password
密码会被加密存储在~/.mylogin.cnf中,只有你本人能读取这个文件。
- 之后直接用这个登录路径执行命令提取指标:
mysql --login-path=local -e "\s" | grep -E "Slow queries|Queries per second avg"
输出就是你需要的两个指标,全程看不到明文密码。
方案2:通过SQL计算Queries per second avg(更稳定)
其实Queries per second avg本质是总查询数除以服务运行秒数,这两个值都能从MySQL的状态表中获取,完全不用依赖\s命令的输出格式:
mysql --login-path=local -e " -- 获取Slow queries指标 SELECT variable_value AS 'Slow queries' FROM information_schema.GLOBAL_STATUS WHERE variable_name = 'SLOW_QUERIES'; -- 计算Queries per second avg指标 SELECT ROUND( (SELECT variable_value FROM information_schema.GLOBAL_STATUS WHERE variable_name = 'QUERIES') / (SELECT variable_value FROM information_schema.GLOBAL_STATUS WHERE variable_name = 'UPTIME'), 4 ) AS 'Queries per second avg';"
这个方法不受MySQL版本更新影响,输出格式更可控,同样全程无密码暴露风险。
方案3:临时使用的无密码暴露方案
如果只是临时用一次,不想配置mysql_config_editor,可以用环境变量临时传递密码,同时避免记录到命令历史:
# 隐藏式输入密码,不会在屏幕上显示输入内容 read -s -p "输入MySQL密码: " MYSQL_PWD # 设置环境变量,MySQL会自动读取这个变量作为登录密码 export MYSQL_PWD # 执行命令提取目标指标 mysql -u 你的用户名 -e "\s" | grep -E "Slow queries|Queries per second avg" # 立即清除环境变量,降低密码泄露风险 unset MYSQL_PWD
注意这个是临时方案,环境变量在进程运行期间是可见的,安全性不如方案1。
内容的提问来源于stack exchange,提问作者Adarsh Sojitra
相关产品推荐
相关产品推荐

