MySQL 5.7 出现问题并使用 mysql_config_editor 重置 root 密码

MySQL 5.7 出现问题并使用 mysql_config_editor 重置 root 密码

我在 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

相关内容