標籤:

配置MySQL開啟遠程連接的方法

配置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服務是否開啟?②防火牆是否配置?③安全組是否配置?(非必須)④是否進行授權

作者: 慕冬雪

鏈接: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 使用系列(一)-- 安裝

TAG:MySQL | SQL | MongoDB |