mysql은 우리가 linux나 윈도우에서 자주 사용하는 데이터베이스이다. 프로그래머라면 누구나 mysql에 익숙해져야 한다고 생각하지만 때로는 두뇌가 단락되기도 한다. 갑자기 mysql 슈퍼유저 루트의 비밀번호를 잊어버린 경우에는 새로운 비밀번호를 변경해야 합니다. 다음 글에서는 리눅스에서 mysql의 루트 비밀번호를 변경하는 방법을 살펴보겠습니다.
서문
mysql에 서비스를 배포한 지 몇 달이 지났을 텐데, 지금은 대부분의 작업이 터미널에서 이뤄지고 있기 때문이죠. 그래서 로그인이 거의 없고 오늘 뭔가 수정하고 싶은데 갑자기 mysql 비밀번호를 완전히 잊어버린 걸 발견했어요. 찾을 수 없고, 권한을 변경할 수 없어서 구덩이를 기어 다니기 시작했습니다. 앞으로 다시 만날 것으로 예상되어 정리하고 기록하겠습니다. 필요하신 친구들은 오셔서 구경하셔도 됩니다.
시스템 매개변수
서버
$ cat /proc/version Linux version 4.8.3-x86_64-linode76 (maker@build) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Thu Oct 20 19:05:39 EDT 2016 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial
mysql
mysql> show variables like "%version%"; +-------------------------+-------------------------+ | Variable_name | Value | +-------------------------+-------------------------+ | innodb_version | 5.7.16 | | protocol_version | 10 | | slave_type_conversions | | | tls_version | TLSv1,TLSv1.1 | | version | 5.7.16-0ubuntu0.16.04.1 | | version_comment | (Ubuntu) | | version_compile_machine | x86_64 | | version_compile_os | Linux | +-------------------------+-------------------------+
해결책
mysql을 안전 모드로 직접 로그인한 후 비밀번호를 재설정할 수 있습니다. 구체적인 단계는 다음과 같습니다
실행 중인 MySQL 서비스 중지:
sudo service mysql stop
안전 모드에서 mysql 시작:
sudo mysqld_safe --skip-grant-tables --skip-networking &
비밀번호 없이 루트로 직접 로그인:
mysql -u root
비밀번호 재설정:
mysql> use mysql; mysql> update user set authentication_string=password('password') where user='root'; mysql> flush privileges;
종료mysql
mysql > quit
mysql 다시 시작
sudo service mysql restart
비밀번호 로그인:
mysql -u root -p
비밀번호 변경 시 오류 메시지가 보고되어 ERROR 1054(42S22)가 발생합니다
비밀번호를 변경하는 중 당시 인터넷의 많은 문서에서 수정 명령을 입력하라는 메시지가 표시되었습니다.
mysql> update user set password=PASSWORD("password") where User='root';
이 명령을 사용할 때
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
라는 오류가 보고되었습니다. 그 이유는 mysql 5.7부터 비밀번호 필드가 인증_string으로 바뀌었습니다. 다음 명령을 사용하여
update user set authentication_string=password('password') where user='root';
를 수정할 수 있습니다. 비밀번호를 변경한 후 mysql에 로그인하지 못했습니다. 오류 2002가 표시됩니다. (HY000)
비밀번호를 변경하는 중 재시작 후 mysql에 로그인할 수 없습니다.
을 검색했더니ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
실행 중인 mysql 보기
ps -A|grep mysql
실행 중인 mysql 종료
sudo pkill mysql
실행 중인 mysqld 보기
ps -A|grep mysqld
실행 중인 mysqld 종료
sudo pkill mysqld
mysql 재시작
service mysql restart
mysql 로그인
mysql -u root -p
요약
위 내용은 Linux에서 mysql의 루트 비밀번호를 변경하는 방법에 대한 샘플 코드에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!