配置MySQL開啟遠程連接的方法
來自專欄 猿論
1.需求
兩台伺服器「centos1(阿里雲)」和「centos2(騰訊雲)」,其中資料庫在「centos1」上,當前需要在「centos2」上遠程鏈接「centos1」的資料庫。
2.授權「centos2」
登錄「centos1」伺服器,用root賬戶登錄mysql查看當前已被授權的用戶
mysql> select Host,User,Password from mysql.user;+-----------------+------+-------------------------------------------+| Host | User | Password |+-----------------+------+-------------------------------------------+| localhost | root | *94D9CC39FA9435D611421A4E8BA68C659AD46961 || iz2ze9hcysthc1c | root | *94D9CC39FA9435D611421A4E8BA68C659AD46961 || 127.0.0.1 | root | *94D9CC39FA9435D611421A4E8BA68C659AD46961 || ::1 | root | *94D9CC39FA9435D611421A4E8BA68C659AD46961 |+-----------------+------+-------------------------------------------+4 rows in set (0.01 sec)
授權新的用戶
mysql> grant all privileges on *.* to root@ip identified by password with grant option;Query OK, 0 rows affected (0.00 sec)
all privileges
:表示將所有許可權授予給用戶。也可指定具體的許可權,如:SELECT、CREATE、DROP等。
on
:表示這些許可權對哪些資料庫和表生效,格式:資料庫名.表名,這裡寫.表示所有資料庫,所有表。如果我要指定將許可權應用到test庫的user表中,可以這麼寫:test.user
to
:將許可權授予哪個用戶。格式:」用戶名」@」登錄IP或主機名」。%表示沒有限制,在任何主機都可以登錄。比如:」zhyd」@」192.168.1.%」,表示zhyd這個用戶只能在192.168.1IP段登錄。為了安全起見,請使用指定ip或者主機進行授權
identified by
:指定用戶的登錄密碼
with grant option
:表示允許用戶將自己的許可權授權給其它用戶
刷新許可權
flush privileges;
查看用戶許可權
mysql> show grants for root@ip;+---------------------------------------------------------------------------------------------------------------------------------------------+| Grants for root@ip |+---------------------------------------------------------------------------------------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO root@ip IDENTIFIED BY PASSWORD *94D9CC39FA9435D611421A4E8BA68C659AD46961 WITH GRANT OPTION |+---------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
3.鏈接遠程資料庫
在「centos2」伺服器上嘗試鏈接「centos1」的資料庫
[root@xxx blog]# mysql -hcentos1_ip -uroot -pEnter password:ERROR 2003 (HY000): Cant connect to MySQL server on centos1_ip (110)
鏈接失敗!
驗證「centos1」伺服器3306介面是否對外開放
telnet centos1_ip 3306Trying centos1_ip...telnet: connect to address centos1_ip: Connection timed out
鏈接失敗!
在「centos1」中添加防火牆規則,開放3306埠
vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPTsystemctl restart iptables
再次使用「telnet」
嘗試,結果依然是鏈接超時!
按說伺服器端的配置已經完成了:mysql服務開啟、分配用戶、開放埠都已經沒問題,但是此時仍舊連不上。因為涉及到兩個不同的伺服器提供商,且每個伺服器提供商都對應一套安全組規則
,所以嘗試修改「centos1(阿里雲)」伺服器的安全組。增加一條入站規則
,入站埠設置為3306/3306,授權對象為「centos2(騰訊雲)」伺服器的ip地址
,如下圖所示
再次使用「telnet」
嘗試,提示連接成功!
在「centos2」上鏈接「centos1」的資料庫
[root@xx www]# mysql -hcentos1_ip -p3306 -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 597Server version: 5.xx MySQL Community Server (GPL)Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type help; or h for help. Type c to clear the current input statement.mysql>
OK,大功告成!
4.注意的問題
1.授權用戶務必遵循最小許可權化原則
2.遠程無法連接mysql時,可從四方面入手排查:①mysql服務是否開啟?②防火牆是否配置?③安全組是否配置?(非必須)④是否進行授權
作者: 慕冬雪
鏈接:https://www.imooc.com/article/25358
來源:慕課網
推薦閱讀:
打造個人品牌 so easy !_慕課手記
提高代碼質量-工具篇
搜索:ElasticSearch OR MySQL?
如何解決MaxScale2.2版本無法load MySQL用戶的問題
Phoenix:Put the SQL back in NoSQL
推薦閱讀:
※MongoDB集群均衡
※MongoDB查詢過程explain參數詳解
※mongodb: 協議分析
※In-place update in MongoDB
※MongoDB 使用系列(一)-- 安裝