Mec*_*are 14 mysql scripting cron
如果我在我的盒子上使用 root 密码登录,我可以简单地输入
mysqldump --all-databases ,我会得到预期的“转储”。
我在 cron.daily 中设置了一个作业来运行并将其转储到备份驱动器。我遇到的问题是,虽然用户以 root 身份运行,但我收到以下消息
mysqldump:得到错误:1045:用户'root'@'localhost'的访问被拒绝(使用密码:否)
尝试连接时。我不想在脚本中硬编码 mysql 数据库 root 密码(谁会)。
考虑到我可以在我的 bash shell 的命令行中输入“mysqldump”,必须有办法使用 -u 参数。我已经在脚本的顶部有 #!/bin/bash。
我在这里错过了什么才能让它不要求数据库的 root 密码?
Zor*_*che 12
为了连接到 mysql 服务器,您必须提供凭据。您可以在配置文件中指定它们,通过命令行传递它们,或者只是创建不需要凭据的帐户。
当然不应该使用 no-password 选项,pass-by 命令行不是很好,因为任何可以运行 ps 的人都可以看到命令行。
推荐的选项是创建一个包含凭据的mysql 配置文件,然后使用文件系统权限保护该文件,以便只有您的备份用户可以访问它。
您能够在以 root 交互登录的同时登录到 mysql 服务器似乎表明您没有设置 root 密码,或者您的脚本找不到配置文件。如果您有 .my.cnf,您可能需要手动指向它。如果您的 root 帐户没有设置密码,那么我强烈建议您解决这个问题。
更新 (2016-06-29) 如果您正在运行 mysql 5.6.6 或更高版本,您应该查看mysql_config_editor工具,该工具允许您将凭据存储在加密文件中。感谢Giovanni向我提到这一点。