CentOS에서 mysql root 비밀번호를 잃어버릴 때가 있습니다. 그럴 경우 일반적으로 mysqld_safe 명령어를 이용하여 root 비밀번호를 변경합니다. 그러나 상위버전의 mysql의 경우 mysqld_safe 파일이 없습니다. 그러므로 mysqld_safe 명령이 존재하지 않을 때 root 비밀번호를 변경하는 방법에 대해서 알아보겠습니다.
1. SSH를 이용하여 root 계정으로 서버에 로그인을 합니다.
2. mysqld 서버를 중지합니다.
[root@localhost /] systemctl stop mysqld
3. mysql 서버에 --skip-grant-tables 옵션을 설정해 줍니다.
[root@localhost /] systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
4. mysqld 서버를 시작합니다.
[root@localhost /] systemctl start mysqld
5. root 사용자로 mysql 서버에 접속을 합니다.
[root@localhost /] mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 259
Server version: 5.7.34 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
6. root 비밀번호를 변경합니다.
mysql> update user set authentication_string=PASSWORD('비밀번호') where user='root';
7. mysql 접속을 빠져나온 후 mysqld 서버를 중지합니다.
[root@localhost /] systemctl stop mysqld
8. mysql 서버에 unset-environment MYSQLD_OPTS 옵션을 설정해 줍니다.
[root@localhost /] systemctl unset-environment MYSQLD_OPTS
9. mysqld 서버를 시작합니다.
[root@localhost /] systemctl start mysqld
10. 이제 다시 mysql 접속을 시도해보면, 변경하였던 비밀번호로 접속이 가능합니다.