Programming/MySQL

MySQL 비밀번호 변경 방법, How to change MySQL root password

Jan92 2021. 7. 24. 16:51

 

개발한 웹사이트를 배포하기 위해서 서버 설정 과정 중 MySQL 비밀번호 변경 방법을 포스팅합니다.

(사용된 운영체제와 MySQL 버전은 다음과 같습니다.)

 

CentOS 7.2 with MySQL 5.7 (64-bit)

 

* 비밀번호 변경 방법 및 명령문은 버전에 따라 다를 수 있습니다.

 

mysql -u -root -p

mysql -u root -p 명령어로 실행합니다.

 

MySQL을 가장 처음으로 실행하게 되면 비밀번호가 설정되어 있지 않기 때문에 Enter Password: 에서 엔터만 입력하는 것으로 접속을 할 수 있습니다.

 

 

use mysql

use mysql;

 

비밀번호 변경을 위해서는  mysql 데이터베이스를 사용해야 합니다.

(Database changed 를 통해 요청이 적용된 것을 확인할 수 있습니다.)

 

다음으로 select 문을 통해 설정된 비밀번호를 확인합니다.

select host, user, password from user;

 

결과로 ERROR 1054 (42522) : Unknown column 'password' in 'field list'  라는 에러 메세지를 확인할 수 있는데요. 

 

이유는 mysql 버전에 따라 필드 명이 password 가 아니라 authentication_string 으로 사용되는 경우도 있기 때문입니다.

 

 

select host, user, authentication_string

select host, user, authentication_string from user;

 

필드 명을 authentication_string 입력시 select 문의 결과를 확인할 수 있습니다.

(mysql 5.x 버전에서는 password 또는 authentication_string 이 사용되고 이는 버전에 따라 다를 수 있습니다.)

 

저는 기존에 비밀번호 설정을 마친 상태라 authentication_string 에 암호화된 비밀번호 값을 확인할 수 있지만 초기 상태라면 localhost root 계정에 비밀번호가 설정되지 않은 것을 확인할 수 있습니다.

(비밀번호가 설정되지 않았기 때문에 처음에 비밀번호 없이 접속이 가능했던 것입니다.)

 

 

validate_password

show variables like 'validate_password%';

 

비밀번호 변경 전 해당 명령어를 통해 암호 설정 정책(Password policy) 암호 자릿수 제한, 특수 분자 포함 여부, 숫자 포함 여부, 길이 등이 설정된 것을 확인할 수 있습니다.

 

 

change password

update user set authentication_string=password('비밀번호') where user='root';

 

(필드 명이 password 인 경우 authentication_string이 아닌 password=password('비밀번호') 로 명령어를 입력해야 합니다.)

update문 이후 최종적으로 flush privileges; 명령어까지 입력해주면 비밀번호 변경 사항이 저장됩니다.

 

 

변경된 비밀번호로 접속

quit 명령어로 mysql을 종료하고 변경한 비밀번호로 다시 접속하게 되면 비밀번호가 변경된 것을 확인할 수 있습니다.