▶ 작업 환경
OS: Linux (Amazon Linux 2)
User: ec2-user
DBMS: MySQL 5.7.41
* 아래 과정은 접속 계정(root)의 패스워드를 분실했을 경우 재설정하는 방법이므로,
만약 mysql 접속 이후에 다른 계정의 패스워드를 변경하고자 하는 경우라면 6번만 확인하면 됩니다.
▶ 설정 방법
1. my.cnf 파일의 경로를 확인해줍니다
~ $ whereis my.cnf
my: /etc/my.cnf
2. 위에서 조회한 파일 편집창으로 들어갑니다
~ $ sudo vi /etc/my.cnf
3. 아래처럼 "skip-grant-tables" 내용을 추가해줍니다
4. mysql 서비스를 재시작 해줍니다
~ $ sudo systemctl restart mysqld
# 또는
~ $ sudo service mysqld restart
* 명령어 차이
더보기
CentOS 6 이전 버전은 service
CentOS 7 이후 버전은 systemctl
위와 같이 버전에 따라 제어하며, 만약 7 버전에서 service를 통해서 수행하면
"Redirecting to /bin/systemctl restart ____.service" 와 같이 systemctl으로 리다이렉팅되어 수행됩니다.
7 이후 버전이라면 어떤 명령어이든지 수행에는 딱히 상관이 없겠지만
그 이전이라면 service를 통해서 수행하면 됩니다.
5. mysql 버전 확인 후 mysql에 접속합니다
# 버전 확인
~ $ mysql --version
mysql Ver 14.14 Distrib 5.7.41, for Linux (x86_64)
# 접속
~ $ mysql
6. 원하는 계정의 패스워드를 변경합니다
# 계정 리스트 확인
mysql> SELECT user, host, password_last_changed from mysql.user;
# 계정 패스워드 변경
# MySQL 5.7.6 이상
mysql> ALER user '[계정명]'@'[호스트]' IDENTIFIED BY '[패스워드]';
# ex) ALTER user 'root'@'localhost' IDENTIFIED BY 'rootonly';
# MySQL 5.7.0 ~ 5.7.5
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('[패스워드]') WHERE user='[계정명]' AND host='[호스트]';
mysql> FLUSH PRIVILEGES;
# MySQL 5.7 미만
mysql> UPDATE mysql.user SET password=PASSWORD('[패스워드]') WHERE user='[계정명]' AND host='[호스트]';
mysql> FLUSH PRIVILEGES;
* mysql 빠져나가기: quit
7. mysql 서비스 재시작 후 해당 계정의 패스워드가 잘 변경되었는지 확인합니다
# 서비스 재시작
~ $ sudo systemctl restart mysqld
# 로그인 확인
~ $ mysql -u [계정명] -p
Enter password: [패스워드 입력]
8. 초반에 코드를 추가했었던 my.cnf 파일을 원복시킵니다
~ $ sudo vi /etc/my.cnf
# 위에서 추가했던 문장 제거 후 저장
- 문의와 피드백은 언제나 환영입니다 ( •̀ .̫ •́ )✧ -