mysqldump:MySql 备份用户无法使用密码连接

mysqldump: MySql backup user is not able to connect using password

我使用以下命令创建了一个 mysql 用户:

CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'password';

我已使用以下命令授予他权限:

GRANT EVENT, LOCK TABLES, SELECT, SHOW DATABASES, RELOAD, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost' IDENTIFIED BY 'password';

但是当我尝试使用以下命令进行数据库转储时,它不起作用:

sudo mysqldump -ubackupuser -ppassword --all-databases > all_db_backup.sql

它说:mysqldump: Got error: 1045: Access denied for user 'backupuser'@'localhost' (using password: YES) when trying to connect

但是如果我不使用密码尝试连接,它会要求输入密码然后就可以了。

我正在创建一个备份脚本,所以我必须在命令中传递密码。您能否帮助我的备份用户使用 mysql 转储进行连接?

您的密码是否包含 shell 的特殊字符?例如 ; & ! 或 space、引号等?您可能需要引用密码。

但无论如何,我建议您不要将密码放在 command-line 上。因此,任何可以 运行 ps 在您的服务器上的人都可以看到您的纯文本密码。

相反,将用户名和密码放在 options file 中。即保存一个小文件,内容如下:

[mysqldump]
user = backupuser
password = ...

当然是在我放“...”的地方写下你自己的密码。

更改文件的权限,这样除了运行备份您的用户之外,没有人可以读取它。

然后在 运行 mysqldump:

时引用选项文件
mysqldump --defaults-file=myopts.cnf --all-databases ...

这样密码就不会出现在服务器的进程列表中。也不必担心密码中的特殊字符。

P.S.: 我不确定你为什么使用 sudo 来 运行 你的备份。那应该没有必要。