今天發(fā)現(xiàn) WordPress 連接不上數(shù)據(jù)庫,登錄 window server 服務(wù)器查看,所有服務(wù)均運(yùn)行正常。
使用 root 賬號登錄 mysql 數(shù)據(jù)庫,結(jié)果提示密碼不匹配。我突然意識到,服務(wù)器可能遭受到 SQL注入 攻擊了……
至于事故發(fā)生的原因和之后所做的補(bǔ)救措施,以后有機(jī)會我會聊一聊的。這里我主要講一下 mysql 用戶密碼的重置步驟。
重置 root 密碼
在忘記 root 密碼的情況下,可以進(jìn)入 mysql 的安全模式,重置 root 密碼。
1. 停止 MySQL 服務(wù)
打開命令提示符窗口,輸入 net stop mysql 關(guān)閉 MySQL 服務(wù)。
C:\Users\Administrator>net stop mysql57
MySQL57 服務(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\bin
C:\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>mysql
Server 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: root
authentication_string:
*************************** 2. row ***************************
user: mysql.sys
authentication_string: *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE
2 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> quit
Bye
關(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 pswd
Enter 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)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
MySQL數(shù)據(jù)庫設(shè)計之利用Python操作Schema方法詳解
mysql中使用instr進(jìn)行模糊查詢方法介紹
MySQL中or語句用法示例
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
您可能感興趣的文章:- MySQL8.0.23版本的root密碼重置最優(yōu)解法
- Linux mysql-5.6如何實現(xiàn)重置root密碼
- 重置mysql的root密碼最簡單的方法
- 解決重置Mysql root用戶賬號密碼問題
- mysql8重置root用戶密碼的完整步驟
- mysql8.0.12如何重置root密碼
- MySQL/MariaDB的Root密碼重置教程
- Mac MySQL重置Root密碼的教程
- lnmp重置mysql數(shù)據(jù)庫root密碼的兩種方法
- 詳解如何在Linux中重置MySQL或者M(jìn)ariaDB的root密碼
- CentOS下重置MySQL的root密碼的教程
- MySQL root密碼的重置方法