MySQL 8.0 重置 root 密碼

Codcodog發表於2020-03-13

場景

mysql 8.0 安裝之後,忘記了 root 密碼,需要重置.

方案

編輯 my.cnf

$ vi /etc/my.cnf

[mysqld] 下新增 skip-grant-tables

[mysqld]
skip-grant-tables

重啟 mysql

$ systemctl restart mysqld.service

重新登入 mysql,無需密碼,直接 enter 進入

$ mysql -uroot -p

進入 mysql 之後,要先 重新整理許可權,否則無法修改密碼

mysql> flush privileges;

修改密碼

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

mysql 8.0 預設是安裝了 validate_password 外掛的
密碼至少包含一個大寫字母,一個小寫字母,一位數字和一個特殊字元,並且密碼總長度至少為8個字元
這裡使用 mysql_native_password 來修改,如果不是 php 連線可能會報 The server requested authentication method unknown to the client 錯誤

設定完成之後,編輯 my.cnf 去除 skip-grant-tables 指令.

之後重啟 mysql 即可

$ systemctl restart mysqld.service

更多

設定 root 遠端登入

登入 mysql 之後,檢視許可權

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
4 rows in set (0.00 sec)

修改許可權,允許遠端訪問

mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

yum 安裝 mysql

參考官方的 A Quick Guide to Using the MySQL Yum Repository

日誌檢視

mysql 錯誤日誌 /var/log/mysqld.log

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章