我们正在运行几个共享主机 Linux 服务器和一个私人服务器。我们在这些服务器上运行 cPanel/WHM 许可证。
我面临的困境是:
如何自动运行以下命令?
mysqlcheck -u root -p --自动修复 --检查 --优化 --所有数据库
问题是我被提示输入 root 密码,但我想自动运行此命令,而密码提示会中断此过程。
请帮我。
答案1
将您的根凭据存储在只有根用户可以访问的文件中。然后只需传递凭据文件名即可。
mysqlcheck --defaults-file=/etc/mysql/root.cnf --auto-repair --check --optimize --all-databases
/etc/mysql/root.cnf
[client]
host = servername.domain.tld
user = backup
password = strongpassword
只要/etc/mysql/root.cnf
只有 root 可读,这就不会造成巨大的安全漏洞,因为 root 用户可以轻松重置 mysql 密码,而根本不需要任何 mysql 凭据。
答案2
您可以将所需的密码放在[client]
~/.my.cnf 部分中,也可以放在您指定的其他配置文件中--defaults-extra-file=path/to/yourconfig.cnf
欲了解更多详情,请参阅选项文件MySQL 文档的一部分。
答案3
您可以在命令行上提供密码。当然,这会带来一些隐私/安全问题。
mysqlcheck -uroot -pPASSWORD --auto-repair --check --optimize --all-databases