1 登陸Mysql
mysql -uroot -p
輸入密碼
2 選擇 mysql 數據庫
use mysql;
在mysql數據庫中存儲了用戶信息的user表
3 在 mysql 數據庫的 user 表中查看當前 root 用戶的相關信息
select host, user, authentication_string, plugin from user;
可以看到root用戶的host默認為localhost,只允許本地訪問,不允許遠程連接..
為了安全(網上有人是這么說的,作為菜雞,我也不知道安全這方面的知識),新創建一個用戶用於遠程連接
4 新建用戶
#CREATE USER '用戶名'@'主機' IDENTIFIED BY '密碼';
CREATE USER 'lylong'@'%' IDENTIFIED BY '901109';
這一步提示密碼過於簡單,先執行一下兩條命令,再次運行創建用戶的命令就行 .
set global validate_password.policy=0;
set global validate_password.length=1;
5 mysql8.0默認的加密方式是“caching_sha2_password”,而navicat只支持以前的"mysql_native_password",所以接下來修改密碼加密方式
ALTER USER 'lylong'@'%' IDENTIFIED WITH mysql_native_password BY '901109';
修改后可以執行select host,user,plugin from user;語句,查看新增用戶的plugin是否是"mysql_native_password"
6 設置該賬戶可以遠程登陸
GRANT ALL PRIVILEGES ON *.* TO 'lylong'@'%';
7 刷新權限
flush privileges;
8 用navicat連接看是否可以遠程登陸,默認端口為3306,如果不能,則查看防火牆是否開啟了該端口。
查看防火牆開放端口:iptables-save
我這里已經開了.如果沒開,則執行以下命令:
添加端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent
重載防火牆:firewall-cmd --reload
以上,是折騰了一整天弄好的.
mysql8.0和5.7比,改動了挺多的地方:
1 修改密碼驗證
5.7 8.0
set global validate_password_policy=0; set global validate_password.policy=0;
set global validate_password_length=1; set global validate_password.length=1;
2 設置賬號遠程登陸
5.7:GRANT ALL PRIVILEGES ON *.* TO 'lylong'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
8.0 GRANT ALL PRIVILEGES ON *.* TO 'lylong'@'%'