今天發現 WordPress 鏈接不上數據庫,登陸 window server 服務器查看,全部服務均運行正常。mysql
使用 root 帳號登陸 mysql 數據庫,結果提示密碼不匹配。我忽然意識到,服務器可能遭受到 SQL注入 攻擊了……sql
至於事故發生的緣由和以後所作的補救措施,之後有機會我會聊一聊的。這裏我主要講一下 mysql 用戶密碼的重置步驟。數據庫
在忘記 root 密碼的狀況下,能夠進入 mysql 的安全模式,重置 root 密碼。安全
打開命令提示符窗口,輸入 net stop mysql 關閉 MySQL 服務。服務器
C:\Users\Administrator>net stop mysql57
MySQL57 服務正在中止..
MySQL57 服務已成功中止。
↑ 服務名稱不必定都是 mysql,好比個人就是 mysql57,57表明版本號爲5.7函數
固然你也能夠經過計算機管理面板關閉 MySQL 服務。ui
在命令提示符窗口中,經過 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>
↑ 默認安裝目錄爲 C:\Program Files\MySQL\MySQL Server spa
在 bin 目錄下輸入 mysqld --skip-grant-tables ,跳過權限檢查啓動 mysql。code
若是你配置了 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 文件中指定了數據的存放路徑,若是不引入配置文件,則會提示 No such file or directory 錯誤。
打開另外一個命令提示符窗口(別關閉安全模式窗口),一樣切換到 mysql \ bin 目錄,輸入 mysql 跳過權限驗證鏈接數據庫。
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>
↑ 也能夠指定鏈接參數 mysql -u <用戶名> -p <密碼> -h <鏈接地址> -P <端口號> -D <數據庫>
執行 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 字段已經被清空了
執行 flush privileges; 命令刷新權限表,密碼已經重置完成,輸入 quit 退出。
mysql> flush privileges; Query OK, 0 rows affected (0.02 sec) mysql> quit Bye
關閉全部命令提示符窗口,經過任務管理器結束 mysqld.exe 進程。重啓 MySQL 服務,以後就能夠直接登陸 root 帳號了。
出於安全考慮,root 密碼不宜爲空,因此須要在密碼重置以後,再從新設置一個密碼。
以 root 身份登陸 mysql,再使用 set password 命令修改密碼:
mysql> set password for root@localhost = password("pswd"); Query OK, 0 rows affected, 1 warning (0.00 sec)
執行該命名以後會提示輸入原密碼,輸入正確後便可修改。
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.
在重置 root 密碼的同時,也能夠設置默認密碼。不過密碼不能爲明文,必須使用 password() 函數加密。
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)