遠程連接MYSQL8.0服務器問題
title: 遠程連接MYSQL8.0服務器問題
date: 2018-07-07 11:02:26
updated:
tags: [MYSQL,坑]
description:
keywords:
comments:
image:
---
問題描述: 先前使用MYSQL5.1,遠端訪問MYSQL服務器沒問題,遇到的問題也就是防火墻問題,修改出入站規則後輕松的解決了.但是MYSQL8.0就很坑了,按照網上的解決辦法折騰了兩個小時,最後解決,依然不明白哪裏有問題,只能把操作復現,為以後使用留個記錄.
機器環境
操作系統:win10
gui工具:navcat12
MYSQL:v8.011
防火墻開啟入站端口
# 直接對root用戶修改的方法 #
操作前請在 bin
目錄下運行cmd,或者設置好bin的環境變量
- 登錄MySQL
mysql -u root -p
- 回車後輸入密碼
- 選擇 要操作的服務
use mysql;
我是使用的mysql作為名稱,根據你自己服務器名稱輸入命令 - 查看mysql 數據庫的 user 表中當前 root 用戶的相關信息(host plugin)
select host,user,authentication_string,plugin from user;
執行完命令後顯示一個表格, root 用戶的 host默認顯示的localhost,說明只支持本地訪問,不允許遠程訪問。 - 先給root賬戶授權,這裏我直接給了所有權限
grant all privileges on *.* to ‘root‘@‘%‘ with grant option;
- 更改 root用戶host 的默認配置
update user set host=‘%‘ where user=‘root‘;
- 執行前面的查詢命令查看root的host是否改變為localhost(如果失敗請繼續往後看)
- 然後更改加密規則
ALTER USER ‘root‘@‘%‘ IDENTIFIED BY ‘password‘ PASSWORD EXPIRE NEVER;
- 更新用戶密碼
ALTER USER ‘root‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘password‘;
- 刷新權限
FLUSH PRIVILEGES;
成功後,可以看到root的host改變了,plugin也變成了mysql_native_password(以前也是mysql_na...但是要修改後才能真的連接成功,很玄學)
!如果上面的步驟你的修改不成功請接著往下看
直接添加用戶的方法
很多人可能和我一樣,前面的直接修改root用戶失敗,之後我嘗試了直接添加用戶的方法成功了,首先你要確保沒有犯低級錯誤,上面的命令行大多是由分號的,請仔細檢查.
啟動cmd,到第三步驟為止都一樣,先創建一個用戶
Create user ‘name‘@‘%‘ identified by ‘password‘;
名字自己定密碼自己定. 執行查詢用戶命令後可以看到多了一個用戶,這裏我創建的是else.它的host應該為localhost,之前我忘記截圖了.他的plugin是caching_.....
- 對用戶授權
grant all privileges on *.* to ‘name‘@‘%‘ with grant option;
- 修改host
update user set host=‘%‘ where user=‘else‘;
- 修改加密方式
ALTER USER ‘else‘@‘%‘ IDENTIFIED BY ‘password‘ PASSWORD EXPIRE NEVER;
- 更新密碼
ALTER USER ‘else‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘password‘;
- 刷新權限
FLUSH PRIVILEGES;
- 查詢用戶可以看到else用戶的host為"%" plugin為"mysql_native_password"這樣基本就代表成功了.
問題到此解決了!
# 後記 #
我的root修改是失敗的,但是在新建完用戶並完成修改後再次修改root就成功了,不知道怎麽回事;
總之要運行遠程連接,必須保證服務器端用戶的host不為”localhost”,plugin為” mysql_native_password.”
所有操作方法都來源於網絡,參考了眾多帖子,沒有做記錄不好寫明來源,抱歉.
最後祝君成功!
這是自己解決問題時的的筆記,如有錯誤請評論或者聯系我謝謝
遠程連接MYSQL8.0服務器問題