>  기사  >  데이터 베이스  >  Linux에서 mysql의 루트 비밀번호를 변경하는 방법에 대한 샘플 코드에 대한 자세한 소개

Linux에서 mysql의 루트 비밀번호를 변경하는 방법에 대한 샘플 코드에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-16 13:23:441137검색

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을 설치했다는 피드백을 받았습니다. 다음 단계를 순서대로 실행하면 문제가 해결됩니다.

실행 중인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.