在鏡像市場中,有很多基礎鏡像都對centos做了優化,以提高性能及安全性。因此會限制了商品,數據庫等的訪問。下面介紹如何把限制都打開,配置MySQL遠程訪問連接。
1. 設置主機安全組
阿里雲,騰訊雲等主機都會有安全組。安全組就是允許可以通過規則進行訪問,比如來源ip,端口等。
如果設置安全組,請查看我的另一文章:
阿里雲/騰訊雲/華為雲安全組配置開放端口
2. 打開iptables 3306端口
有些去主機默認打開了iptables 3306端口,有些則沒有。下面是介紹開開端口的方法
如果您的操作系統為CentOS系列:
$ iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
$ service iptables save #保存iptables規則
如下圖:
如果您的操作系統為Ubuntu/Debian系列:
$ iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
$ iptables-save > /etc/iptables.up.rules #保存iptables規則
3. 數據庫授權
這是最后一步,前面的都是對主機進行訪問權限的配置。
這一步才是授權用戶能遠程訪問Mysql。
注意⚠️:遠程連接新建一個帳號(建議新建賬號,不建議直接使用root用戶)。
3.1 新建用戶並授權
添加一個用戶名為db_user,
密碼為db_pass,
授權為% (%表示所有IP能連接)
對db_name數據庫所有權限,
命令如下:
MySQL8.0版本
mysql -uroot -p 回車后會提示輸入root的密碼
$ mysql -uroot -p
MySQL [(none)]> create user db_user@'%' identified by 'db_pass'; # 創建用戶
MySQL [(none)]> grant all privileges on db_name.* to db_user@'%' with grant option; # 授權
MySQL [(none)]> exit; # 退出數據庫控制台,特別注意有分號
其余MySQL版本
mysql -uroot -p 回車后會提示輸入root的密碼
$ mysql -uroot -p
MySQL [(none)]> grant all privileges on db_name.* to db_user@'%' identified by 'db_pass'; # 授權語句,特別注意有分號
MySQL [(none)]> flush privileges;
MySQL [(none)]> exit; # 退出數據庫控制台,特別注意有分號
圖示:
4. 關閉遠程
由於某種原因,需對所有用戶收回遠程權限。步驟如下:
關閉iptables 3306端口
mysql revoke收回權限