우분투 15.10 MySQL 오류 1524-Unix_Socket


51

우분투 15.10에서 (mariadb 설치 및 제거 후) mysql이 작동하지 못했습니다. 작업이 시작되었지만 서버가 다운되었습니다.

명령에서 :

mysql -u root -p

시스템은 다음과 같이 응답합니다.

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

로그인 할 수없고, 플러그인을 찾을 수 없으며, 구성 파일에 오류가 없습니다 (모두 기본값으로).

다시 제어하고 mysql 서버를 실행시키는 방법?


이 특정 오류에 익숙하지는 않지만 다음 토론을 참조하십시오. lists.launchpad.net/maria-developers/msg08177.html
Jos

@Jos : 비슷한 상황에 대한 논의는 해결책을 제공하지 않습니다. 나는 많은 구글 검색을했지만 완벽한 솔루션이 노출되지 않았습니다. 어쨌든, 나는 실제 답변을 게시했습니다.
Hydra Starmaster

오류 메시지의 이유 : unix_socket 플러그인은 MariaDB (MySQL 아님)의 일부이며이를 사용하여 권한 부여를하려면로드해야합니다. mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

답변:


94

"unix_socket"은 mysql 인증 프로세스에 의해 호출되었습니다 (데이터베이스를 mariadb 로의 부분 마이그레이션과 관련이있을 수 있음). 모든 작업을 다시 수행하려면 su로 이동하십시오.

sudo su

다음을 따르십시오.

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot

이것은 mysql을 완전히 멈추고, 사용자 인증을 우회하고 (비밀번호 필요 없음) 사용자 "root"로 mysql에 연결합니다.

이제 mysql 콘솔에서 mysql 관리 db를 사용하십시오.

use mysql;

루트 비밀번호를 mynewpassword로 재설정하려면 (원하는대로 변경) 확인하십시오.

update user set password=PASSWORD("mynewpassword") where User='root';

그리고 이것은 인증 방법을 덮어 쓰고 unix_socket 요청 (및 다른 모든 것)을 제거하여 정상적이고 작동하는 암호 방법을 복원합니다.

update user set plugin="mysql_native_password";

mysql 콘솔을 종료하십시오 :

quit;

mysql과 관련된 모든 것을 중지하고 시작하십시오.

/etc/init.d/mysql stop
kill -9 $(pgrep mysql)
/etc/init.d/mysql start

exitsu 모드를 잊지 마십시오 .

이제 mySQL 서버가 시작되어 실행 중입니다. 루트로 로그인 할 수 있습니다 :

mysql -u root -p

또는 원하는대로. 비밀번호 사용이 작동합니다.

그게 다야.


내 .. 무엇 mysqld_safe과 같은 옵션 --skip-grant-tables이 없습니까?
heemayl

나는 mysqld 5.6.27-0ubuntu1에 있습니다. 그 옵션은 다음과 같습니다 :mysqld --verbose --help
Hydra Starmaster

2
이것은 나를 가졌다. mysqld_safe--skip-grant-tables는 존재하지 않는다는 주장 대신에 약간의 차이점 이 있습니다 mysqld. 그러나 계속 소켓 파일을 만들 수 없다고 불평했습니다 /var/run/mysqld/. apparmor 구성을 확인했으며 적절한 권한이 있습니다. 이 문제를 해결하려면 mkdir /var/run/mysqld/완전히 열린 권한을 부여해야 chmod -R 777 /var/run/mysqld/합니다. 그런 다음 마침내 데몬을 시작하고 플러그인을 'mysql_native_password'로 변경할 수 있습니다.
dennmat 2016 년

1
내 사용자 테이블에는 암호 필드가 없습니다 (Ubuntu 16 mysql 5.7.13). 나는이 SQL을 사용했다 : UPDATE mysql.user SET authentication_string = PASSWORD ( 'foobar123'), password_expired = 'N'WHERE User = 'root'AND Host = 'localhost';
Anthony Scaife

이 지침은 간결하며 문제를 해결하는 데 도움이되었습니다. 감사합니다!
Eduardo B.

11

이 작업을 수행하는 단계는 다음과 같습니다.

/etc/init.d/mysql stop
sudo killall mysqld_safe
sudo killall mysqld
sudo mysqld_safe --skip-grant-tables &
mysql -u root
use mysql;
update user set password=PASSWORD("mynewpassword") where User='root';
update user set plugin="mysql_native_password";
quit;
/etc/init.d/mysql stop
sudo kill -9 $(pgrep mysql)
/etc/init.d/mysql start

1
이제 "mysql -u root"후에 다음과 같은 오류가 발생합니다. 오류 1524 (HY000) : 플러그인 'root'
가로

두 개의 UPDATE 쿼리를 섞은 것처럼 들립니다. 실수로 plugin = "root"를 설정 했습니까?
Adam Plocher
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.