首次安裝MySQL後,通過Navicat進行連接MySQL遇到了一系列的問題,不過都順利KO ~
畫蛇添足
正篇
基礎必備
此處聲明一些cmd內基礎sql語句的操作與注意事項
- 管理員身份運行cmd
- 啓動服務
net start mysql
- 登錄數據庫
#之後輸入之前設置過的密碼即可
mysql -u root -p
- 進入mysql數據庫
use mysql
- 查看user對應的host
select host, user from user;
允許遠程連接數據庫
遠程連接MySQL數據庫報錯:is not allowed to connect to this MYSQL server的解決辦法
改表法
PS:我用的這種解決的問題
在localhost登入mysql後,更改 “mysql” 數據庫裏的 “user” 表裏的 “host” 項,將"localhost"改稱"%"
完整命令
#登錄MySQL
mysql -u root -p
#查看已有數據庫
show databases;
#進入mysql數據庫
use mysql;
#修改用戶的host
update user set host = '%' where user = 'root';
#檢驗是否修改成功
select host, user from user;
補充:
show databses; ~
select host, user from user; ~ 方便檢驗修改前後的host
授權法
場景:你想root使用mypassword從任何主機連接到mysql服務器的話
GRANT ALL PRIVILEGES ON *.* TO ‘root’@'%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
# 刷新MySQL的系統權限相關表
flush privileges;
場景:如果你想允許用戶root從ip爲192.168.1.3的主機連接到mysql服務器,並使用mypassword作爲密碼
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.40.54' IDENTIFIED BY '123456' WITH GRANT OPTION;
# 刷新MySQL的系統權限相關表
flush privileges;
常見問題:在採用法二授權法之後,無法在本地登錄mysql
1.授權
# 登錄MySQL
mysql -u root -p
# 授權
grant all privileges on *.* to 'root'@'主機名' identified by '123456' with grant option;
# 刷新權限
flush privileges;
2.在本地使用ip地址登錄
mysql -u root -p -h ip地址
遠程連接身份驗證
Authentication plugin 'caching_sha2_password
Navicat Premium 12連接MySQL數據庫時出現Authentication plugin ‘caching_sha2_password’ cannot be loaded的錯誤
出現原因:
MySQL8 之前的版本中加密規則是mysql_native_password,而在MySQL8 之後,加密規則是caching_sha2_password,
解決方式:
- 升級navicat驅動
- 還原mysql用戶登錄密碼加密規則爲mysql_native_password.
主講還原密碼規則
完整命令
#登錄MySQL
mysql -u root -p
#修改賬戶密碼加密規則
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新用戶密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
#刷新權限並重置密碼
FLUSH PRIVILEGES;
核心命令
這裏的%代表的是任意遠端而非localhost,可以進入mysql表查詢對應的user
擴展命令
#單獨重置密碼命令
alter user 'root'@'localhost' identified by '123456';
大功告成
Navicat設置編碼格式
編輯連接 - 高級 (默認編碼:自動)