[mysql] MySQL 실패 : mysql “오류 1524 (HY000) : 플러그인 ‘auth_socket’이로드되지 않았습니다.”

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

  • 신선한 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)에 다시 도착했습니다.



답변

나는 해결책을 얻었다!

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파일 건너 뛰기

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


답변

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

서버 시작 :

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을 재설정하는 방법을 확인하십시오.


답변

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

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

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

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

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


답변

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

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


답변

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>

답변

시도해보세요 : sudo mysql_secure_installation

우분투 18.04의 작품


답변

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

  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’사용자 계정에서 사용됩니다.