MySQL은 로컬에서만 작동하므로 MySQL에 대한 원격 액세스를 제공하려고 했습니다.
나는 이 가이드를 따랐다 http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html
튜토리얼에서 다음과 같은 명령을 사용했습니다.
mysql> update user set Host='202.54.10.20' where user='root';
나는 이것이 로컬 mysql을 망친 것 같아요.
이제 다음으로는 로그인할 수 없습니다:
$ mysql -u root -p
이 오류가 발생합니다.
사용자 'root'@'localhost'에 대한 액세스가 거부되었습니다(비밀번호 사용: 예).
이제는 이전에도 작동했던 것처럼 비밀번호가 올바른지 알고 있습니다. 그런데 실수로 문을 잠가버렸어요..
더 이상 무엇을 해야할지 모르겠습니다.
서버에서 사용하는 OS는 Ubuntu입니다.
답변1
일반 복구 절차를 시도해 볼 수 있습니다.
- MySQL 서비스 중지
다음을 사용하여 서비스를 실행합니다.
sudo mysqld_safe --skip-grant-tables &
연결(비밀번호는 필요하지 않음):
mysql -uroot
변경 사항을 되돌립니다(이번에는 주의하고
select
현재 상태가 무엇인지 확인하십시오. 호스트는 이어야 합니다202.54.10.20
).use mysql; update user set Host='localhost' where user='root'; flush privileges;
일반적인 방법으로 MySQL을 다시 시작하십시오.
답변2
다음 명령을 시도해 보세요.
SHOW GRANTS FOR 'root'@'localhost';
적절한 권한이 없는 경우에도 이런 일이 발생할 수 있습니다. 따라서 다음 명령을 입력할 수도 있습니다.
GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;
답변3
나는 동일한 문제가 있었고 (virtualmin에서 사용자 호스트를 잘못 업데이트했습니다) @techraf의 답변과 유사한 단계로 문제를 해결했지만 can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
우분투 16.04의 오류를 피하기 위해 이 사이트의 유사한 단계를 따랐습니다.
https://coderwall.com/p/j9btlg/reset-the-mysql-5-7-root-password-in-ubuntu-16-04-lts
비밀번호 대신 호스트를 업데이트하도록 단계를 수정했습니다.
# Stop MySQL
sudo service mysql stop
# Make MySQL service directory.
sudo mkdir /var/run/mysqld
# Give MySQL user permission to write to the service directory.
sudo chown mysql: /var/run/mysqld
# Start MySQL manually, without permission checks or networking.
sudo mysqld_safe --skip-grant-tables --skip-networking &
# Log in without a password.
mysql -uroot mysql
그런 다음 mysql에서:
select user, host from mysql.user; --just to check
UPDATE mysql.user SET host='localhost' WHERE User='root' AND Host='202.54.10.20'; --CHANGE the host to the one you see in the query
select user, host from mysql.user; --check again
commit;
exit;
그런 다음 콘솔에서 다음을 수행합니다.
# Turn off MySQL.
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
# Start the MySQL service normally.
sudo service mysql start
답변4
Workbench에서 이 오류가 발생하는 경우 다음 단계를 따르세요.
먼저 현재 비밀번호로 로그인하세요.
sudo mysql -u root -p
비밀번호 강도가 낮으면 오류가 발생할 수 있으므로 비밀번호를 변경하세요.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';
FLUSH PRIVILEGES;
그런 다음 종료하고 새 비밀번호로 다시 로그인하십시오.
quit
sudo mysql -u root -p
성공적으로 로그인한 후 다음 명령을 입력하십시오.
use mysql;
'데이터베이스 변경됨'과 같은 메시지가 표시되고 다음을 입력해야 합니다.
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
그 다음에는 다음을 입력하세요.
UPDATE mysql.user set authentication_string=PASSWORD('new-strong-password') where user='root';
그런 다음 다음을 입력합니다.
FLUSH PRIVILEGES;
그런 다음 간단히 종료하십시오.
quit
이제 WORKBENCH에서 새 비밀번호로 로그인해 보세요. 그것이 효과가 있기를 바랍니다. 감사합니다.