MySQL - 사용자 root@localhost에 대한 액세스가 거부되었습니다.

MySQL - 사용자 root@localhost에 대한 액세스가 거부되었습니다.

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

일반 복구 절차를 시도해 볼 수 있습니다.

  1. MySQL 서비스 중지
  2. 다음을 사용하여 서비스를 실행합니다.

    sudo mysqld_safe --skip-grant-tables &
    
  3. 연결(비밀번호는 필요하지 않음):

    mysql -uroot
    
  4. 변경 사항을 되돌립니다(이번에는 주의하고 select현재 상태가 무엇인지 확인하십시오. 호스트는 이어야 합니다 202.54.10.20).

    use mysql;
    update user set Host='localhost' where user='root';
    flush privileges;
    
  5. 일반적인 방법으로 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에서 새 비밀번호로 로그인해 보세요. 그것이 효과가 있기를 바랍니다. 감사합니다.

관련 정보