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 年 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 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
![](https://images.cnblogs.com/cnblogs_com/isme-zjh/1665628/t_200309175526zhifubao.png?a=1583807649478)
您的资助是我最大的动力!
金额随意,欢迎来赏!