MySQL root 계정의 패스워드 분실 했을 경우 바꾸는 방법
MySQL 설치후 초기 root 패스워드를 설정 하는 방법은 아래 링크를 참고 하세요.
https://opensrc.tistory.com/207
[MySQL] MySQL 5.7 설치 후 초기 root 계정 비밀번호 변경 하기
이전 포스트 [CentOS 7 minimal 설치 #3] MySQL 5.7 설치에서도 한번 언급을 했었습니다만, 이전 버전과 방식이 좀 바뀐것 같습니다. MySQL 5.6 까지는 설치후 콘솔에서 바로 root 로 접속 해서 비밀번호를
opensrc.tistory.com
============================================================================
MySQL root 계정의 패스워드 분실 했을 경우 바꾸는 방법
MySQL 이전 버전에서 root 비밀번호를 분실 했을때 유용하게 이용되던 mysqld-safe 명령이 MySQL 7 부터는 없어진 것 같습니다.
MySQL 5.7버전을 설치 한 후에 저 명령을 아무리 찾아도 없었습니다. 구글링 끝에
https://stackoverflow.com/questions/33510184/change-mysql-root-password-on-centos7
이런 내용의 글을 보았습니다.
간단히 요약해 보면
1. mysqld-safe 명령은 사라졌음
2. user 테이블의 구조가 바뀌었음
그래서 아래의 순서에 따라서 비밀번호를 바꿀 수 있습니다.
1. MySQL 서버 중지
[root@localhost ~]# systemctl stop mysqld
2. MySQL 환경변수 설정
[root@localhost ~]# systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
3. MySQL 서버 가동
[root@localhost ~]# systemctl start mysqld
4. 비번 없이 root 로그인
[root@localhost ~]# mysql -u root
5. root 비밀번호 업데이트
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('새비밀번호')
-> WHERE User = 'root' AND Host = 'localhost';
ERROR 1348 (HY000): Column 'authentication_string' is not updatable
마리아 DB 10.4.12 에서는 위와 같은 방법으로는 에러가 발생합니다.
아래 방법으로 해결 가능합니다.
mysql> ALTER mysql.user 'root'@'localhost' identified by '새비밀번호';
Query OK, 0 rows affected (0.012 sec)
mysql> COMMIT;
mysql> FLUSH PRIVILEGES;
mysql> quit
6. MySQL 중지
[root@localhost ~]# systemctl stop mysqld
7. MySQL 환경변수 초기화
[root@localhost ~]# systemctl unset-environment MYSQLD_OPTS
8. MySQL 서버 시작
[root@localhost ~]# systemctl start mysqld
9. 새 비밀번호로 로그인 확인
[root@localhost ~]# mysql -u root -p
참고로 user 테이블이 변경 된것은 user 테이블의 접근을 쿼리가 아닌 시스템 명령으로 하면 큰 차이는 없을 것 같습니다.
MySQL 공식 문서에서도
alter user 'root'@'localhost' identified by '새비밀번호';
이런 형태를 권장 하는 것 같습니다.
유저 생성 및 비밀번호, 권한 부여는 [CentOS 7 minimal 설치] MySQL DB생성, User 생성 글을 참고 하시기 바랍니다.