mysql 遠程連接不上,bind-address參數配置要求,以及怎么去使得mysql能夠允許遠程的客戶端訪問


 

 

剛安裝了MySQL服務器,使用遠程管理工具總是連接不上,因為知道mysql的默認端口是3306,於是使用telnet連接這個端口,(從這里可以學到telnet是可以這樣用的)

telnet 192.168.1.10 3306

還是連接不上,於是懷疑是防火牆問題,便將防火牆關掉,
service iptables stop

再次telnet,還是沒辦法連上這個端口,然后通過netstat查看3306的端口狀態是怎么樣的(從這里可以學到netstat是可以這樣用的)
netstat -apn | grep 3306

終於發現了一個比較奇怪的東西
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 3783/mysqld

上面標紅的地方,監聽端口正常,但卻綁定了本地回旋地址,難怪總是連接不上,於是查了下資料,找到了解決辦法:
修改mysql的配置文件/etc/mysql/my.conf,將bind-address后面增加遠程訪問IP地址或者禁掉這句話就可以讓遠程機登陸訪問了。

bind-address=127.0.0.1  139.196.197.138
(允許多個IP可訪問mysql服務器,空格隔開)

記得要重啟mysql服務哦
service mysql restart

 參考鏈接:http://www.php512.com/?p=808

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

mysql的配置文件my.cnf 或者 my.ini在哪?

 

1)/etc/mysql/my.conf

2)D:\mysql-5.7.27-win32\my.ini

即一般linux 上都放在 /etc/my.cnf   ,window 上安裝都是默認可能按照上面的路徑還是沒找到, window 上  可以登錄到mysql中  使用   show variables like '%data%' 先找到data 存放路徑, 一般my.ini 在 data文件的上一級。

 

 

上面的是針對的LINUX系統上的mysql的配置的  /etc/mysql/my.conf

下面來介紹一下在window上面的mysql 的配置 mysql 的配置文件   D:\mysql-5.7.27-win32\my.ini

 

此時出現的問題:net stop mysql  之后無法的去從新的啟動mysql  服務,報錯如下:

 

 之后將配置文件再的blind -adress改成了127.0.0.1   沒有配置兩個ip,這個時候可以去正常的關閉和重啟Mysql服務了,

更改成blind -adress=192.168.27.1了,  192.168.27.1是遠程的客戶端的ip,之后重啟還是無法啟動,報錯如下;

 

 

 

blind -adress=192.168.27.4,   192.168.27.4是mysql server所在計算機的ip,可以重啟

 

 

但是仍然是沒有解決在mysql配置文件中設置遠程訪問的問題!!!

具體的解決辦法:網上的有人認為:可以將Mysql的配置文件更改一下在其中的blind-adress=的后面賦值兩個ip地址,但是自己試過了,改成兩個了,根本無法重新的去啟動mysql服務,之后見到了一篇博文:https://blog.csdn.net/weixin_33816946/article/details/85977125,所以認為無法通過 blind-adress配置兩個 ip ,一個是本機的localhost,一個是遠程的客戶端機的ip,這樣沒有實現(但是到底能不能這種方法去實現:還未得到答案!!!!!!!!!!)

博文的內容如下

http://jpuyy.com/2013/07/mysql-bind-multi-address.html
mysql綁定多個ip地址
發表於2013 年 71 日
my.cnf中有選項bind-address=127.0.0.1,是說mysql server監聽的是本地發來的請求,如果是任意主機都可以請求,則寫為0.0.0.0,但是這樣又不太安全。監聽某ip,指定此ip地址即可,但是要保證mysql的user中有允許此ip訪問,否則不能對數據庫操作。那么是否可以在配置里只規定幾個ip呢?

簡單直接回答:不可能

請參考:http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_bind-address

The MySQL server listens on a single network socket for TCP/IP connections. This socket is bound to a single address, but it is possible for an address to map onto multiple network interfaces. The default address is 0.0.0.0. To specify an address explicitly, use the –bind-address=addr option at server startup, where addr is an IPv4 address or a host name. If addr is a host name, the server resolves the name to an IPv4 address and binds to that address. The server treats different types of addresses as follows:

If the address is 0.0.0.0, the server accepts TCP/IP connections on all server host IPv4 interfaces.
If the address is a “regular” IPv4 address (such as 127.0.0.1), the server accepts TCP/IP connections only for that particular IPv4 address.

但是有此需求,就會到訪問控制,那么使用防火牆iptables可實現此效果

mysql-server為192.168.1.3,只允許192.168.1.4,  192.168.1.5,  192.168.1.6來訪問3306端口

在my.cnf中

bind-address = 0.0.0.0
在訪問3306端口的主機中,只允許192.168.1.4-6,其他ip一律DROP掉

/sbin/iptables -A INPUT -p tcp -s 192.168.1.4 --dport 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 192.168.1.5 --dport 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 192.168.1.6 --dport 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP
或

/sbin/iptables -A INPUT -p tcp --dport 3306 ! -s 192.168.1.4 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 3306 ! -s 192.168.1.5 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 3306 ! -s 192.168.1.6 -j DROP
保存防火牆規則

service iptables save
查看INPUT鏈包含3306的規則

echo -e "target prot opt source destination\n$(iptables -L INPUT -n | grep 3306)"
這樣就實現了mysql只允許指定ip訪問。

參考:

http://www.cyberciti.biz/faq/unix-linux-mysqld-server-bind-to-more-than-one-ip-address/

 

更改防火牆的安全策略教程:

 

Windows防火牆配置(允許某個網段和部分IP訪問某個端口)
1.win+R

2.gpedit.msc

3.計算機配置+Windows設置+安全設置+IP安全策略,在本地計算機

4.創建IP安全策略

5.配置IP篩選器列表、篩選器操作

6.分配

 

 

演示動圖見https://blog.csdn.net/u013165852/article/details/88401546

 

192.168.1.0/24

192.168.1.0是你的IPV4地址;/24是你的子網掩碼,代表255.255.255.0。

IPV4地址用32位二進制數表示,為了方便,大家使用點分十進制記法,將每個字節用"."來分開。因此32位的4字節數被分成了4段,分別是192 168 1 0。
子網掩碼也是32位二進制數表示,/24指的就是子網掩碼前24位全部都是1,轉換過來就是:255.255.255.0

原文鏈接:https://blog.csdn.net/u013165852/article/details/88401546

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM