1.先將MySQL停止、
命令:systemctl stop mysqld #停掉MySQL
命令:systemctl status mysqld #查看狀態
2.然后跳過授權表啟動MySQL服務程序
這一步主要利用mysqld的 --skip-grant-tables選項
修改my.cnf配置,添加 skip_grant_tables=1啟動設置:
打開/etc/my.cnf配置文件
添加skip_grant_tables 一行,然后保存退出
3.然后啟動MySQL並查看狀態
命令:systemctl start mysqld
4.使用mysql命令連接到MySQL服務,重設root的密碼
由於前一步啟動的MySQL服務跳過了授權表,所以可以root從本機直接登錄
在命令行內直接輸入mysql即可
5.進入 mysql> 環境后,通過修改mysql庫中user表的相關記錄,重設root用戶從本機登錄的密碼:
命令:update mysql.user set authentication_string=password('123qqq...A') where user='root' and host='localhost';
#重新設置密碼
命令:FLUSH PRIVILEGES; #刷新授權列表
然后輸入 exit 退出mysql
注意:通過執行“FLUSH PRIVILEGES;”可使授權表立即生效,對於正常運行的MySQL服務,也可以用上述方法來修改密碼,不用重啟服務。本例中因為是恢復密碼,最好重啟MySQL服務程序,所以上述“FLUSH PRIVILEGES;”操作可跳過。
6.重新以正常方式啟動MySQL服務程序,驗證新密碼
如果前面是修改/etc/my.cnf配置的方法來跳過授權表,則重置root密碼后,應去除相應的設置以恢復正常:
7.重置后的新密碼,才能成功登入(試試新鮮出爐的密碼吧):
OK!現在忘記密碼如何重新設置已經完了,接下來就是root修改密碼的三種方式:
1.重置管理員root密碼
正常的前提是:已知當前MySQL管理用戶(root)的密碼。
方法:在Shell命令行下設置
使用mysqladmin管理工具,需要驗證舊的密碼。比如,以下操作將會把root的密碼設置為A...qqq321 :
命令:mysqladmin -uroot -p password 'A...qqq321'
2.修改管理員root密碼的其他方法(三種)
1)方法1,以root登入mysql> 后,使用set password指令設置
這個與新安裝MySQL-server后首次修改密碼時要求的方式相同,平時也可以用
擴展一下(如果出現
ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50564, now running 50726. Please use mysql_upgrade to fix this error. 這種報錯,是因為沒更新數據庫里的結構信息導致的,輸入一行命令即可解決:mysql_upgrade -uroot -p'123qqq...A')
我是因為修改密碼太多了,可能導致的報錯,use用戶表沒更新又重新設置密碼才會這樣的
好了,剛才那種情況可能會出現,繼續剛才的修改密碼
命令:set password for root@localhost=password('1234567');
試驗一下
2)方法2,以root登入mysql> 后,使用GRANT授權工具設置
這個是最常見的用戶授權方式:
命令: grant all ON *.* TO root@localhost identified by '123qqq...A';
3)方法3,以root登入mysql> 后,使用UPDATE更新相應的表記錄
這種方法與恢復密碼時的操作相同:
在上述方法中,需要特別注意:當MySQL服務程序以 skip-grant-tables 選項啟動時,如果未執行“FLUSH PRIVILEGES;”操作,是無法通過set password或者grant方式來設置密碼的。登錄MySQL或者驗證這兩種方式時,都會看到ERROR 1045的報錯: