如何在Shell脚本中配置自动传递系统密码,实现开机停止MySQL服务无需手动输入密码
如何在Shell脚本中配置自动传递系统密码,实现开机停止MySQL服务无需手动输入密码
嗨,我来帮你搞定这个问题!首先得严肃提醒你:绝对不要在脚本里明文写系统密码,这会直接泄露你的系统权限,风险特别高。咱们用更安全可靠的方法来解决:
方法一:配置sudo免密执行特定命令
这是最稳妥的方式,让你的用户无需输入密码就能执行停止MySQL的命令:
- 打开终端,执行
sudo visudo命令(这个命令会安全地编辑sudo配置文件,还会做语法检查,避免改错导致sudo失效) - 在文件的末尾添加一行内容,记得把
你的用户名替换成你实际的系统用户名:你的用户名 ALL=(ALL) NOPASSWD: /usr/sbin/service mysql stop - 保存并退出(如果用的是nano编辑器,按
Ctrl+O保存,Ctrl+X退出) - 之后你的脚本里只需要写
sudo service mysql stop,运行时就不会再要求输入密码了
方法二:更高效的方案——直接禁止MySQL开机自启
其实你的核心需求是开机时MySQL不运行,与其开机后再停止,不如直接让它不随系统启动:
- 如果你的系统用的是systemd(比如Ubuntu 16.04+、Debian 9+、CentOS 7+等),执行命令:
sudo systemctl disable mysql - 如果是旧版的sysvinit系统,执行:
sudo update-rc.d mysql disable
这样系统开机时MySQL就不会自动启动了,比写脚本再停止要高效得多
如果你坚持要用脚本实现
配置好sudo免密后,修改你的.sh脚本内容为:
#!/bin/bash sudo service mysql stop
然后给脚本添加执行权限:
chmod +x 你的脚本文件名.sh
最后把这个脚本添加到系统的开机启动项里(比如Ubuntu可以通过「Startup Applications」添加,其他系统可以对应配置开机启动脚本的路径)
再次强调:不要用
echo 你的密码 | sudo -S service mysql stop这种方式,密码会明文出现在命令历史、脚本文件里,非常危险!
备注:内容来源于stack exchange,提问作者Hardik Desai
相关产品推荐
相关产品推荐

