一.賦予某個用戶權限
1.賦予權限格式:grant 權限 on 數據庫對象 to 用戶@IP(或者相應正則)
注:可以賦予select,delete,update,insert,index等權限精確到某一個數據庫某一個表。
GRANT ALL PRIVILEGES ON *.* TO '用戶名'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;
這里表示賦予該用戶所有數據庫所有表(*.*表示所有表),%表示所有IP地址。

2.刷新權限:FLUSH PRIVILEGES;
3.查看權限:select user,host from mysql.user;

注:mysql是自帶的數據庫名,里面的表是Mysql相關配置信息端口,事件等等,其中user存放用戶信息

3.按理就可以在其他IP地址連接了(使用mysql -u用戶名 -h服務器ip地址 -P端口號 -p)
二.意外
1.配置文件種指定了blind-address:
查看Mysql配置文件種(一般是/etc/my.cnf種)是否指定了blind-address,這表示只能是某個或某幾個ip能連接。如果有就將它注釋了,前面加#號注釋。然后從啟mysql。

重啟mysql:service mysqld restart,如果安裝的是Mariadb(我的就是),則需要使用systemctl restart mariadb.service

2.防火牆的原因:
可能會報:ERROR 2003 (HY000): Can't connect to MySQL server on '你要連接的IP' (111)。
原因:1.可能是Mysql端口不對(默認是3306),只需加參數 -P 你的端口指定就行;

查看mysql服務端口
2.還有可能是有防火牆阻止,可以通過telnet來測試(可以直接關閉防火牆)。
防火牆相關命令:
(1)查看防火牆狀態:service iptables status或者systemctl status firewalld或者firewall-cmd --state
(2)暫時關閉防火牆:systemctl stop firewalld或者service iptables stop或者systemctl stop firewalld.service
(3)永久關閉防火牆:systemctl disable firewalld或者chkconfig iptables off或者systemctl disable firewalld.service
(4)重啟防火牆:systemctl enable firewalld或者service iptables restart 或者systemctl restart firewalld.service
(5)永久關閉后重啟:chkconfig iptables on
3.端口未開啟:(我遇到的就是這個原因)
Mysql:ERROR 2003 (HY000) 110(連接超時)
查看你的服務器是否把對應端口打開,未打開啟動就行了。
