mysqldump Cron Job Password less 命令行脚本 MySQL 5.6
mysqldump Cron Job Password less command line scripts with MySQL 5.6
我登录 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)
我无法重现问题。检查用户的凭据(在我的例子中是 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"
看来我真正的问题是我从 cpanel 帐户调用 cronjob,它没有访问根目录中 .mylogin.cnf 文件的权限。
我最后做的是将我的 .mylogin.cnf 从根文件夹复制到帐户文件夹 (/home/ACCOUNTNAME/),然后将 owner:group 权限更改为 cpanel 帐户用户(账户名:账户名)。然后来自该帐户的 cronjob 能够访问 --login-path。
您可以在创建文件时(使用 mysql_config_editor )使用 cpanel 帐户而不是 root 帐户登录 SSH,并避免复制文件和更改权限。出于某种原因,这对我不起作用。
最后一个有效的 CronJob 调用是:
mysqldump --login-path=CREDSREFERENCE DATABASENAME | gzip > "/home/ACCOUNTFOLDERNAME/backup/DATABASENAME-$(date).sql.gz"
感谢@wchiquito。他的命令行和讨论让我走上了正轨。
我最近遇到了一个问题,涉及一些 Linux 包含散列标记的错误保存路径密码。显然,当您输入带有井号的密码时,您需要用引号括起来。
我登录 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)
我无法重现问题。检查用户的凭据(在我的例子中是 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"
看来我真正的问题是我从 cpanel 帐户调用 cronjob,它没有访问根目录中 .mylogin.cnf 文件的权限。
我最后做的是将我的 .mylogin.cnf 从根文件夹复制到帐户文件夹 (/home/ACCOUNTNAME/),然后将 owner:group 权限更改为 cpanel 帐户用户(账户名:账户名)。然后来自该帐户的 cronjob 能够访问 --login-path。
您可以在创建文件时(使用 mysql_config_editor )使用 cpanel 帐户而不是 root 帐户登录 SSH,并避免复制文件和更改权限。出于某种原因,这对我不起作用。
最后一个有效的 CronJob 调用是:
mysqldump --login-path=CREDSREFERENCE DATABASENAME | gzip > "/home/ACCOUNTFOLDERNAME/backup/DATABASENAME-$(date).sql.gz"
感谢@wchiquito。他的命令行和讨论让我走上了正轨。
我最近遇到了一个问题,涉及一些 Linux 包含散列标记的错误保存路径密码。显然,当您输入带有井号的密码时,您需要用引号括起来。