我在 Debian Jessie 上使用 MySQL 5.7.17,并希望使用 mysqldump 和 mysql_config_editor 转储数据库。
我为 mysql_config_editor 执行的步骤。他们是:
mysql_config_editor set --login-path=local --host=localhost --user=root --password
mysql_config_editor print --all
用户将是root。
现在更改 root 密码:
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
打开一个新终端并输入以下内容:
mysql -u root -p
use mysql;
select user,host from user where user='root';
UPDATE user SET authentication_string=PASSWORD('123456') WHERE user='root';
FLUSH PRIVILEGES;
exit
sudo service mysql stop
sudo service mysql start
现在我执行以下命令:
mysqldump --login-path=local parana > parana.sql
我收到以下消息:
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
您如何解决能够备份 cpn mysqldump 和 --login-path 的问题,或者它们是否有其他替代方案可以备份。非常感谢
答案1
我也遭受了同样奇怪的行为。
当我在脚本中使用命令时:
/usr/bin/mysqldump -h localhost -u root -pmy#rootpassword mysql --tables db >> mysql-db_2017-03-17_09-50-35.sql
我收到警告:
Warning: Using a password on the command line interface can be insecure.
所以我将备份脚本更改为
/usr/bin/mysqldump --login-path=backups mysql --tables db >> mysql-mysql-db_2017-03-17_08-24-07.sql
但这给了我错误:
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
MySQL官方文档建议尝试使用“mysql”命令进行配置
https://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html
要连接到本地服务器,请使用以下命令:
shell> mysql --login-path=client
实际上我发现我以这种方式得到了同样的错误:
$ mysql --login-path=backups
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我无法理解它,直到我偶然发现 MySQL 文档底部的这条评论:
密码字符串中含有“#”字符会导致认证失败,因为读取字符串时,哈希字符会被视为注释的开头。
这将我带到了 MySQL Bug 页面:
https://bugs.mysql.com/bug.php?id=74691
在那里我找到了对我有用的建议解决方法:
解决方法是在引号“pass#pass”中输入密码。
建议的修复:
将所有字符串括在引号中。
所以我在“mysql_config_editor”中重新输入了我的密码:
$ mysql_config_editor set --login-path=scripts --host=localhost --user=root --password
Enter password: -> typeing: "my#rootpassword" <- including the character >"<
WARNING : 'scripts' path already exists and will be overwritten.
Continue? (Press y|Y for Yes, any other key for No) : y
最后登录成功:
$ mysql --login-path=scripts
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 139
Server version: 5.6.35-log Distributed by The IUS Community Project
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye