mysqldump Cron Job使用MySQL 5.6减少命令行脚本

时间:2017-07-15 21:27:31

标签: mysql cron-task

我登录SSH作为帐户我想最终运行Cron作业。 (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)

3 个答案:

答案 0 :(得分:1)

我的真正问题似乎是我从cpanel帐户调用cronjob,它无权访问root中的.mylogin.cnf文件。

我最终做的是将我的.mylogin.cnf从根文件夹复制到帐户文件夹(/ home / ACCOUNTNAME /),然后将所有者:组权限更改为cpanel帐户用户(ACCOUNTNAME:ACCOUNTNAME)。然后该帐户的cronjob可以访问--login-path。

您可能只需在创建文件时使用cpanel帐户而不是root用户登录SSH(使用mysql_config_editor)并避免复制文件和更改权限。出于某种原因,这对我来说并不适合。

最终的CronJob调用是:

mysqldump --login-path=CREDSREFERENCE DATABASENAME | gzip > "/home/ACCOUNTFOLDERNAME/backup/DATABASENAME-$(date).sql.gz"

感谢@wchiquito。他的命令和讨论让我走上正轨。

答案 1 :(得分:0)

我无法重现这个问题。检查用户的凭据(在我的情况下为mysql_user)以访问MySQL:

username@machine $ mysql_config_editor set \
                   --login-path=mysqldump \
                   --host=localhost \
                   --user=mysql_user \
                   --password
Enter password:

username@machine $ ls -l .mylogin.cnf 
-rw------- 1 username username 120 Jan 10 00:01 .mylogin.cnf

username@machine $ mysql_config_editor print --all
[mysqldump]
user = mysql_user
password = *****
host = localhost

username@machine $ mysqldump tbl_name | \
                   gzip > "/path/username/tbl_name-$(date).sql.gz"

username@machine $ ls -l *.sql.gz
-rw-rw-r-- 1 username username 1276 Jan 10 00:02 tbl_name-Tue Jan 10 00:02:01 UTC 2017.sql.gz

username@machine $ crontab -l -u username
# Edit this file to introduce tasks to be run by cron.
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
0 1 * * * mysqldump tbl_name | gzip > "/path/username/tbl_name-$(date).sql.gz"

答案 2 :(得分:0)

我最近在一些Linux错误保存路径密码(包含哈希标记)方面遇到了问题。显然,当您输入带有井号的密码时,需要用引号引起来。