今天發(fā)現(xiàn) WordPress 連接不上數(shù)據(jù)庫,登錄 window server 服務(wù)器查看,所有服務(wù)均運行正常。
使用 root 賬號登錄 mysql 數(shù)據(jù)庫,結(jié)果提示密碼不匹配。我突然意識到,服務(wù)器可能遭受到 SQL注入 攻擊了……
至于事故發(fā)生的原因和之后所做的補救措施,以后有機(jī)會我會聊一聊的。這里我主要講一下 mysql 用戶密碼的重置步驟。
重置 root 密碼
在忘記 root 密碼的情況下,可以進(jìn)入 mysql 的安全模式,重置 root 密碼。
1. 停止 MySQL 服務(wù)
打開命令提示符窗口,輸入 net stop mysql 關(guān)閉 MySQL 服務(wù)。
C:/Users/Administrator>net stop mysql57MySQL57 服務(wù)正在停止..MySQL57 服務(wù)已成功停止。
↑ 服務(wù)名稱不一定都是 mysql,比如我的就是 mysql57,57代表版本號為5.7
當(dāng)然你也可以通過計算機(jī)管理面板關(guān)閉 MySQL 服務(wù)。
2. 切換到 bin 目錄
在命令提示符窗口中,通過 cd 命令切換到 mysql 安裝目錄下的 bin 目錄。
C:/Users/Administrator>cd C:/Program Files/MySQL/MySQL Server 5.7/binC:/Program Files/MySQL/MySQL Server 5.7/bin>
↑ 默認(rèn)安裝目錄為 C:/Program Files/MySQL/MySQL Server
3. 進(jìn)入安全模式
在 bin 目錄下輸入 mysqld --skip-grant-tables
,跳過權(quán)限檢查啟動 mysql。
如果你配置了 my.ini 文件,則需要將其引入: mysqld --defaults-file="../my.ini" --skip-grant-tables
[mysqld]basedir = "C:/ProgramData/MySQL/MySQL Server 5.7"datadir = "C:/ProgramData/MySQL/MySQL Server 5.7/Data"
↑ 我在 my.ini 文件中指定了數(shù)據(jù)的存放路徑,如果不引入配置文件,則會提示 No such file or directory 錯誤。
4. 重置賬戶密碼
打開另一個命令提示符窗口(別關(guān)閉安全模式窗口),同樣切換到 mysql / bin 目錄,輸入 mysql 跳過權(quán)限驗證連接數(shù)據(jù)庫。
C:/Program Files/MySQL/MySQL Server 5.7/bin>mysqlServer version: 5.7.16 MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.mysql>
↑ 也可以指定連接參數(shù) mysql -u <用戶名> -p <密碼> -h <連接地址> -P <端口號> -D <數(shù)據(jù)庫>
執(zhí)行 update mysql.user set authentication_string="" where user="root"; 重置 root 用戶的密碼(5.7 之前為 password 字段)。
mysql> update mysql.user set authentication_string="" where user="root";Query OK, 1 row affected (0.00 sec)mysql> select user,authentication_string from mysql.user/G*************************** 1. row *************************** user: rootauthentication_string:*************************** 2. row *************************** user: mysql.sysauthentication_string: *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE2 rows in set (0.00 sec)
↑ root 用戶的 authentication_string 字段已經(jīng)被清空了
5. 刷新權(quán)限表
執(zhí)行 flush privileges; 命令刷新權(quán)限表,密碼已經(jīng)重置完成,輸入 quit 退出。
mysql> flush privileges;Query OK, 0 rows affected (0.02 sec)mysql> quitBye
關(guān)閉所有命令提示符窗口,通過任務(wù)管理器結(jié)束 mysqld.exe 進(jìn)程。重啟 MySQL 服務(wù),之后就可以直接登錄 root 賬號了。
修改 root 密碼
出于安全考慮,root 密碼不宜為空,所以需要在密碼重置之后,再重新設(shè)置一個密碼。
方法一:SET PASSWORD
SET PASSWORD FOR "username"=PASSWORD("new password");
以 root 身份登錄 mysql,再使用 set password 命令修改密碼:
mysql> set password for root@localhost = password("pswd");Query OK, 0 rows affected, 1 warning (0.00 sec)
方法二:mysqladmin
mysqladmin -u "username" -p password "new password"
執(zhí)行該命名之后會提示輸入原密碼,輸入正確后即可修改。
C:/Program Files/MySQL/MySQL Server 5.7/bin> mysqladmin -u root -p password pswdEnter password: ****mysqladmin: [Warning] Using a password on the command line interface can be insecure.Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
方法三:UPDATE TABLE
UPDATE mysql.user SET authentication_string=PASSWORD("new password") WHERE user="username";
在重置 root 密碼的同時,也可以設(shè)置默認(rèn)密碼。不過密碼不能為明文,必須使用 password() 函數(shù)加密。
mysql> update mysql.user set authentication_string=password("pswd") where user="root";Query OK, 1 row affected, 1 warning (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)
總結(jié)
以上就是本文關(guān)于windows下重置mysql的root密碼方法介紹的全部內(nèi)容,希望對大家有所幫助。
|
新聞熱點
疑難解答
圖片精選