저는 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
사용자는 루트가 됩니다.
이제 루트 비밀번호를 변경하십시오.
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 버그 페이지가 나타납니다.
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