MySQL 실패 : mysql "오류 1524 (HY000) : 플러그인 'auth_socket'이로드되지 않았습니다."


127

내 지역 환경은 다음과 같습니다.

  • 신선한 Ubuntu 16.04
  • PHP 7
  • MySQL 5.7이 설치된 경우

    sudo apt-get install mysql-common mysql-server

MySQL에 로그인하려고 할 때 (CLI를 통해) :

mysql -u root -p

3 단계의주기적인 문제를 발견했습니다.

1) 먼저 소켓 문제

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

해결 방법 : PC를 다시 시작합니다.

다른 오류가 발생했습니다.

2) 액세스가 거부 된 경우

ERROR 1698 (28000): Access denied for user 'root'@'localhost'.

가능한 문제? "루트"사용자의 비밀번호가 잘못되었습니다!

해결 방법 : 이 자습서로 루트 암호를 재설정하십시오 .

올바른 암호와 작동중인 소켓을 사용하면 마지막 오류가 발생합니다.

3) 잘못된 인증 플러그인

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

여기서 나는 멈췄거나 어떻게 든 1)에 다시 도착했습니다.


1
도움이 돼서 다행입니다 :) 문의 해 주셔서 감사합니다!
Tomáš Votruba

답변:


373

나는 해결책을 얻었다!

2) 단계에서 루트 비밀번호를 재설정 할 때 인증 플러그인도 다음으로 변경하십시오 mysql_native_password.

use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root';  # THIS LINE

flush privileges;
quit;

이를 통해 성공적으로 로그인 할 수있었습니다!


전체 코드 솔루션

1. bash 명령 실행

1. 먼저 다음 bash 명령을 실행하십시오.

sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql

2. 그런 다음 mysql 명령을 실행하십시오 => 이것을 cli에 수동으로 붙여 넣으십시오.

use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user

flush privileges;
quit;

3. 더 많은 bash 명령 실행

sudo /etc/init.d/mysql stop 
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p 

4. 소켓 문제 (귀하의 의견에서)

소켓 오류가 표시되면 커뮤니티에 다음 두 가지 가능한 솔루션이 있습니다.

sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &

(@Cerin에게 감사드립니다)

또는

mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld  

(@Peter Dvukhrechensky에게 감사드립니다)


블라인드 경로 및 가능한 가장자리 오류

localhost 대신 127.0.0.1 사용

mysql -uroot # "-hlocalhost" is default

"파일 누락"또는 slt 오류가 발생할 수 있습니다.

mysql -uroot -h127.0.0.1

더 잘 작동합니다.

소켓 문제 건너 뛰기

mysqld.sock파일 을 만들고 , 액세스 권한을 변경하거나, 심볼릭 링크하는 방법은 여러 가지가 있습니다 . 결국 문제가 아니었다.

my.cnf파일 건너 뛰기

문제도 거기에 없었습니다. 확실하지 않은 경우 도움이 될 수 있습니다 .


3
감사합니다. 이것은 또한 mysql 루트 패스를 재설정하는 방법에 대한 훌륭한 답변이므로 이미 소켓 문제가 발생하기 전에 제목을 약간 편집하여 문제가 발생할 수 있습니다.
Wtower

1
도움이되어 다행입니다. 원본 메시지를 유지하기 위해 제목을 어떻게 편집 하시겠습니까? 솔루션에 비밀번호 재설정이 필요하다는 것을 이해하지만 제목의 문제가 해결되지 않습니다. 이것은 더 많은 포인트의 더 복잡한 실패입니다. 루트 암호 재설정의 경우 다음으로 이동합니다. stackoverflow.com/a/6401963/1348344
Tomáš Votruba

1
@matanster 실제로는 이것은 순수한 단계별 시행 실패입니다. 어떤 OS를 사용하십니까?
Tomáš Votruba

8
mysqld_safe 호출이 올바르지 않습니다. 대신 다음을 실행해야합니다.sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld; sudo mysqld_safe --skip-grant-tables &
Cerin

3
대답에 소켓 문제의 가능한 해결책을 추가하십시오. 이 같은 mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld그것은 누군가의 시간을 절약 할 수 있습니다
피터 Dvukhrechensky

41

다음과 같이 시도해 볼 수 있습니다.

서버 시작 :

sudo service mysql start

이제 양말 폴더로 이동하십시오.

cd /var/run

양말 백업 :

sudo cp -rp ./mysqld ./mysqld.bak

서버 중지 :

sudo service mysql stop

양말 복원 :

sudo mv ./mysqld.bak ./mysqld

mysqld_safe를 시작합니다.

 sudo mysqld_safe --skip-grant-tables --skip-networking &

mysql 쉘 초기화 :

 mysql -u root

비밀번호 변경 :

따라서 먼저 데이터베이스를 선택하십시오.

mysql> use mysql;

이제 아래에 두 개의 쿼리를 입력하십시오.

mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root'; 

이제 모든 것이 정상입니다.

mysql> flush privileges;
mysql> quit;

확인을 위해 :

mysql -u root -p

끝난!

N.B, After login please change the password again from phpmyadmin

이제 확인 hostname/phpmyadmin

Username: root

Password: 123456

자세한 내용 은 Ubuntu에서 잊어 버린 암호 phpmyadmin을 재설정하는 방법을 확인하십시오.


2
이것은 나에게만 작동합니다! 백업 및 복원 소켓은 꽤 똑똑
udoy touhid

1
오류 1045 (28000) : "완료!"전에 사용자 'root'@ 'localhost'(암호 사용 : YES)에 대한 액세스가 거부되었습니다. 123456으로 로그인을 시도 할 때 귀하의 답변에 입력하십시오.
trainoasis

phpmyadmin에서 설명 된 단계 (즉, 암호 변경, 플러그인 변경)를 수행하여 해결했습니다. 어떤 이유로 'set authentication_string = password (...)'로 인해 작동이 중지되었습니다 (오류 1045 (28000) : 액세스 거부 ...).

12

mysql명령은 기본적으로 UNIX 소켓을 사용하여 MySQL에 연결합니다.

MariaDB를 사용 하는 경우 서버 측에서 Unix 소켓 인증 플러그인 을로드해야합니다 .

다음 [mysqld]과 같이 구성 을 편집하여 수행 할 수 있습니다 .

[mysqld]
plugin-load-add = auth_socket.so

배포에 따라 구성 파일은 일반적으로 /etc/mysql/또는/usr/local/etc/mysql/


1
이 하나. 다른 모든 답변은 오류 해결 방법을 설명합니다. 이것은 그것을 해결하는 방법을 설명합니다.
Envite 2019 년

MariaDB 10.4.3 이상을 사용하는 경우 기본적으로 unix_socket auth 플러그인이 설치되어야하지만 "user"를 업데이트 할 때 plugin = "unix_socket"대신 plugin = "auth_socket"으로 잘못 참조하면 다소 오해의 소지가있는 메시지를 받게됩니다. 내 대답은 내가 이것을 어떻게 엉망으로 만들 었는지 자세히 설명합니다.
Rohn Adams

9

다음 몇 가지 단계를 시도 할 수 있습니다.

MySQL 서비스 1 차 중지 sudo /etc/init.d/mysql stop

비밀번호없이 루트로 로그인 sudo mysqld_safe --skip-grant-tables &

mysql 터미널에 로그인 한 후 명령을 더 실행해야합니다.

use mysql;

UPDATE mysql.user SET authentication_string=PASSWORD('solutionclub3@*^G'), plugin='mysql_native_password' WHERE User='root';

flush privileges;

sudo mysqladmin -u root -p -S /var/run/mysqld/mysqld.sock shutdown

mysql 서버를 다시 시작한 후 여전히 오류가 발생하면 다음을 방문해야합니다. MySQL 5.7 루트 암호 재설정 Ubuntu 16.04


8

Ubuntu 18.04 및 mysql 5.7의 경우

  • 1 단계: sudo mkdir /var/run/mysqld;

    2 단계: sudo chown mysql /var/run/mysqld

    3 단계 : sudo mysqld_safe --skip-grant-tables종료 (멈춘 경우 종료 사용)

비밀번호없이 mysql에 로그인

  • 4 단계 : sudo mysql --user=root mysql

    5 단계 : SELECT user,authentication_string,plugin,host FROM mysql.user;

    6 단계 : ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'

지금 로그인

  • mysql -u root -p <root>

1
하지만 어떤 단계에서 루트에 대한 패스를 설정할 수 있습니까? 시도 $ mysql -u root -p했지만 아직 액세스가 거부 되었기 때문 입니다. Access denied for user 'root'@'localhost' (using password: YES)나는 입력에 'YES'암호 시도
AlexNikonov

4

시도해보세요 : sudo mysql_secure_installation

우분투 18.04의 작품


1

누군가 내가 똑같은 실수를 한 후 여기에 착륙하는 경우 :

  1. plugin="mysql_native_password"일시적으로로 전환되었습니다 . 내 작업을 수행했습니다.
  2. "auth_socket"플러그인으로 다시 전환하려고 시도했지만 잘못 참조하여 plugin="auth_socket"결과가mysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"
  3. 이 실수를 고치기 위해 로그인하는 방법이 없었기 때문에 mysql_safe적절한 플러그인으로 전환하기 위해 mysql을 중지하고 인증을 우회해야했습니다.plugin="unix_socket"

바라건대 이것은 누군가가 원래 포스터의 오류 메시지를 수신하는 경우 시간을 절약 할 수 있지만, 진정한 원인은 실제로 "auth_socket"플러그인 자체가없는 것이 아니라 플러그인 이름을 변경하는 것이 었습니다. MariaDB 문서 에 따르면 다음과 같습니다.

MariaDB 10.4.3 이상에서는 unix_socket 인증 플러그인이 기본적으로 설치되며 기본적으로 'root'@ 'localhost'사용자 계정에서 사용됩니다.


-7

아래 명령으로 시도 할 수 있습니다.

hduser@master:~$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
hduser@master:~$ sudo /etc/init.d/mysql start
[ ok ] Starting mysql (via systemctl): mysql.service.

더 설명해 주시겠습니까? 서버를 다시 시작하면 주어진 오류 메시지가 어떻게 해결됩니까?
Nico Haase 2019 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.