小编Vil*_*ila的帖子

通过 /etc/cron.daily 中的 shell 脚本的无密码 mysqldump

我知道有很多与此类似的问题,但似乎没有一个对我的问题有明确的答案,所以这就是我发布此内容的原因......我希望在正确的地方。

问题

我有一个脚本,/etc/cron.daily其中执行每日数据库备份等。只要将密码硬编码到mysqldump命令的脚本中,它就可以正常工作。

#!/bin/sh
$ mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Run Code Online (Sandbox Code Playgroud)

但是,不想在脚本中使用密码,我设置了~/.my.cnf文件 (chmod 600),其中存储了我的用户密码,因此mysqldump脚本中的命令将是无密码的。

~/.my.cnf    
[mysqldump]
password="pass"
Run Code Online (Sandbox Code Playgroud)
#!/bin/sh    
$ mysqldump -u [uname] db_name > db_backup.sql
Run Code Online (Sandbox Code Playgroud)

当我以 root 身份从命令行手动运行这个新脚本时,它就像一个魅力。

sudo sh /etc/cron.daily/daily-backup-script
Run Code Online (Sandbox Code Playgroud)

但是当cron想要运行它时,它无法转储数据库,并出现以下错误:

mysqldump: Got error: 1045: Access denied for user 'user'@'localhost' (using password: NO) when trying to connect.
Run Code Online (Sandbox Code Playgroud)

所以,我认为cron没有相应的权限才能执行密码的mysqldymp脚本命令中,用密码放在~/.my.cnf,但是脚本和密码的mysqldump命令它是从完美用命令行工作sudo

迄今为止的努力:

  1. 我已经在脚本sudo中的mysqldump命令前面尝试过。
  2. 我已经在脚本sudo -u …

mysqldump my.cnf scripting password cron

3
推荐指数
1
解决办法
1387
查看次数

标签 统计

cron ×1

my.cnf ×1

mysqldump ×1

password ×1

scripting ×1