zoukankan      html  css  js  c++  java
  • 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-win32my.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-win32my.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
    $(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

  • 相关阅读:
    项目编译
    sqlserver查列名
    list<>初始化赋值两种方式
    看到一句很不错的话
    typescript
    vscode里div等html标签代码补全
    JavaScript 基于原型链的继承
    大数据系列01:大数据离线计算平台hadoop集群搭建和本地环境配置实践
    java数据类型
    计算机基础及java基础
  • 原文地址:https://www.cnblogs.com/isme-zjh/p/11540442.html
Copyright © 2011-2022 走看看