【发布时间】:2017-12-20 17:32:17
【问题描述】:
我以最终要运行 Cron Job 的帐户登录 SSH。 (ACCOUNT_NAME)
然后我运行:
mysql_config_editor set --login-path=local --host=localhost --user=MYSQL_USERNAME --password
然后我输入此用户名的密码。
然后我运行:
mysql_config_editor print --all
它显示了这个:
[local]
user = MYSQL_USERNAME
password = *****
host = localhost
然后我试试:
mysql --login-path=local
我收到此错误:
Error 1045 (28000); Access denied for user 'MYSQL_USERNAME'@'localhost' (using password: YES)
【问题讨论】:
-
您可能错误地使用了
--login-path(它在您的配置文件中创建了一个组[USERNAME],并且没有定义目录)。运行mysql_config_editor print --all以查看其当前内容。该文件将始终为运行它的用户创建(=在其主目录中),因此请使用运行 cron 作业的用户(或在 cron 文件中指定用户,设置“HOME”-变量或使用其他的意思) -
如果我运行 [code]mysql_config_editor print --all[/code] 组 [code][USERNAME][/code] 就在那里,其中包含 USERNAME 和加密密码。我只是将路径命名为与用户名相同。然后这样调用。仍然很困惑。
-
不,你误解了我的意思。您(通常)不想要具有用户名的组,因为您需要在运行 mysql 之前指定该名称,因此它知道它应该使用该组中的选项(“mysqldump”可能是一个可行的组名,所以只有 mysqldump 会使用这个数据)。除了知道组之外,您还需要文件位于执行 cron 作业的用户的主目录中(或在运行 cronjob 时设置主目录变量),否则 mysql(dump) 将找不到它。只是在运行配置工具之前执行
cd /home/ACCOUNTNAME/不会这样做。 -
谢谢。我想创建以运行 cron 作业的用户身份登录的组是有道理的。 (我之前创建了这个以 root 身份登录)。因此,我以 cron 作业用户身份登录并创建了一个名为 mysqldump 的路径:
mysql_config_editor set --login-path=mysqldump --host=localhost --user=USERNAME --password这在我的 /home/ACOUNTNAME/ 目录中创建了一个新的 .mylogin.cnf,其组和所有者权限为 ACOUNTNAME/ACOUNTNAME 然后我尝试运行我的 cron 作业使用:`mysqldump --login-path=mysqldump USERNAME | gzip > "/home/ACOUNTNAME/backup/DATABASENAME-$(date).sql.gz -
(评论室用完了,新来的,感谢您的耐心等待)仅供参考 - 之前的尝试也失败了