設置mysql 5.7 可以外部訪問的辦法


 

這里主要介紹在不知MySQL的root密碼的情況下,使用--skip-grant-tables關閉MySQL服務器的認證,從而可以重置root的密碼。MySQL版本為5.7。

1、關閉MySQL

sudo service mysqld stop

2、使用--skip-grant-tables 和 --skip-networking 重啟MySQL

sudo mysqld --skip-grant-tables  --skip-networking &

--skip-grant-tables:此選項會讓MySQL服務器跳過驗證步驟,允許所有用戶以匿名的方式,無需做密碼驗證直接登陸MySQL服務器,並且擁有所有的操作權限。

--skip-networking:此選項會關門MySQL服務器的遠程連接。這是因為以--skip-grant-tables方式啟動MySQL服務器會有很大的安全隱患,為了降低風險,需要禁止遠程客戶端的連接。

3、本地連接mysql

shell> mysql

--skip-grant-tables已經關閉MySQL服務器的認證,以匿名方式,無需密碼即可連接。

4、重置密碼

在重置密碼前,先要重載授權表:

mysql> FLUSH PRIVILEGES;

MySQL 5.7.6+:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.6以及之后的版本,使用ALTER USER語法來修改密碼。

MySQL 5.7.5以及之前的版本

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

MySQL 5.7.5以及之前的版本使用SET PASSWORD語法修改密碼。

如果上面的方法修改密碼有錯,可以直接修改mysql.user表:

UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass')
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

注意:mysql5.7 user表里已經去掉了password字段,改為了authentication_string。

5、重啟服務器

service mysqld restart

因為之前使用--skip-grant-tables啟動,所以需要重啟mysql服務器,去掉--skip-grant-tables。

參考:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM