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
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 年7 月 1日
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 socketfor 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 asfollows:
If the addressis 0.0.0.0, the server accepts TCP/IP connections on all server host IPv4 interfaces.
If the addressis a “regular” IPv4 address (such as 127.0.0.1), the server accepts TCP/IP connections only forthat 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.分配
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