내 지역 환경은 다음과 같습니다.
- 신선한 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의 작품
답변
누군가 내가 똑같은 실수를 한 후 여기에 착륙하는 경우 :
plugin="mysql_native_password"
일시적으로로 전환되었습니다 . 내 작업을 수행했습니다.- “auth_socket”플러그인으로 다시 전환하려고 시도했지만 잘못 참조하여
plugin="auth_socket"
결과가mysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"
- 이 실수를 고치기 위해 로그인하는 방법이 없었기 때문에
mysql_safe
적절한 플러그인으로 전환하기 위해 mysql을 중지하고 인증을 우회해야했습니다.plugin="unix_socket"
바라건대 이것은 누군가가 원래 포스터의 오류 메시지를 수신하는 경우 시간을 절약 할 수 있지만, 진정한 원인은 실제로 “auth_socket”플러그인 자체가없는 것이 아니라 플러그인 이름을 변경하는 것이 었습니다. MariaDB 문서 에 따르면 다음과 같습니다.
MariaDB 10.4.3 이상에서는 unix_socket 인증 플러그인이 기본적으로 설치되며 기본적으로 ‘root’@ ‘localhost’사용자 계정에서 사용됩니다.