【MySQL】MySQL5.7.x root 密碼重置

MySQL 出了5.7了,并且網(wǎng)上說性能提高了一兩倍,于是在虛擬機上安裝了個 CentOS 7,在上面安裝 MySQL 5.7。

我使用的是 yum安裝方式,要求虛擬機能夠上網(wǎng)。

安裝教程:http://www.itdecent.cn/p/54e649075e97

mysql5.7 安裝成功了,但是用之前版本介紹的登錄方法都是不成功的:

1)默認 root 密碼為空,其實不為空,使用 mysql -u root 進行登錄失敗

2)使用 mysqladmin 進行重置密碼,也不成功,因為它要求提供初始密碼,就不知道初始密碼才來重置的,失敗

3)使用 mysqld_safe 進行重置,這個更不靠譜,在根目錄下執(zhí)行 find -name mysqld_safe,根本找不到這個文件

4)說在 /root/目錄下有一個 .mysql_secret 初始化密碼文件,這個文件根本就不存在,手動創(chuàng)建之后,使用 mysqladmin 啟動也不認這個密碼

其實想要重置 5.7 的密碼很簡單,就一層窗戶紙:

1、修改 /etc/my.cnf,在?[mysqld]?小節(jié)下添加一行:skip-grant-tables=1?這一行配置讓 mysqld 啟動時不對密碼進行驗證

2、重啟 mysqld 服務:systemctl restart mysqld

3、使用 root 用戶登錄到 mysql:mysql -u root?

4、切換到mysql數(shù)據(jù)庫,更新 user 表:

mysql> update mysql.user set?authentication_string?= password('NEW_PASSWD'),?password_expired = 'N',?password_last_changed = now()?where user = 'root';

以前的版本中,密碼字段的字段名是 password,5.7版本改為了 authentication_string。

以前重置密碼的命令是:

mysql>update?mysql.user?set?password=password("NEW_PASSWD")?where?user="root";

5、退出 mysql,編輯 /etc/my.cnf 文件,刪除?skip-grant-tables=1 的內(nèi)容

6、重啟 mysqld 服務,再用新密碼登錄即可

MySQL 5.7 在初始安裝后(CentOS7 操作系統(tǒng))會生成隨機初始密碼,并在 /var/log/mysqld.log 中有記錄,可以通過 cat 命令查看,找 password 關(guān)鍵字:

# ?cat??/var/log/mysqld.log | grep?"A temporary password"?

找到密碼后,在本機以初始密碼登錄,并且(也只能)通過 alter user 'root'@'localhost' identified by 'NEW_PASSWD' 命令,修改 然后退出,重新以root用戶和剛設置的密碼進行登錄!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容