• mysql配置bind-address不生效


    1、前言

      因为要ip直接访问mysql,故去修改bind-address参数,按照mysql配置文件查找顺序是:/etc/my.cnf/etc/mysql/my.cnf~/.my.cnf,服务器上没有 /etc/my.cnf文件,故去修改 /etc/mysql/my.cnf文件,但是一直不生效。

    2、环境

    mysql版本:8.0.34-0ubuntu0.20.04.1 (select version();sql查询)
    系统:ubuntu 20.04

    3、确定原因

    3.1、确定配置文件路径

    使用命令:

    mysql --help|grep 'my.cnf'
    
    • 1

    输出:

    /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

    由于没有找到/etc/my.cnf 文件,故确定首先找到的配置文件为/etc/mysql/my.cnf

    3.2、尝试寻找文件不生效问题

    3.2.1、配置文件

    初始配置文件配置:

    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
    • 1
    • 2

    增加启动参数后:

    [mysqld]
    port=33062
    bind-address=0.0.0.0
    mysqlx-bind-address = 0.0.0.0
    
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    修改启动端口和绑定地址,发现端口修改生效,但是绑定地址不生效确定配置文件没问题
    看了下mysql官方文档,我都以为我拼写错误了,修改了格式,依然无效。

    原文:bind_address,后知后觉,配置文件写法是bind-address,这里写的bind_address是数据库的参数名

    3.2.2、验证当前绑定地址

    • 查询数据库的bind_address参数
    SELECT VARIABLE_NAME, VARIABLE_VALUE FROM performance_schema.global_variables 
    WHERE VARIABLE_NAME = 'bind_address';
    
    • 1
    • 2

    看值是否为127.0.0.1

    • 查看系统端口监听:
    netstat -anp | grep 3306
    
    • 1

    看是否出现127.0.0.1:3306

    • 查看是否能指定ip登录上:
    mysql -u root -proot -h 你的ip -P 33062
    
    • 1

    看是否能登录上,不能登录的,先把用户管理里面用户的host改为%,表示为全部ip都能访问这个用户,这里测试环境,使用了root测试,正式环境,最好不要给root用户随便ip都能访问
    访问不了的报错:

    ERROR 2003 (HY000): Can’t connect to MySQL server on ‘175.27.191.203:33062’ (111)

    3.2.3、查看是否服务启动参数问题

    • 直接查看进程
    ps -ef|grep "mysql"
    
    • 1

    输出:

    mysql 2591855 1 0 10:59 ? 00:00:01 /usr/sbin/mysqld
    root 2594993 2566566 0 11:12 pts/0 00:00:00 grep --color=auto mysql

    可以看到启动没有带任何参数

    • 查看mysql.server有没异常
      mysql是直接使用apt命令安装的,所以默认有server命令
    systemctl status mysql
    
    • 1

    输出:

    ● mysql.service - MySQL Community Server
    Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
    Active: active (running) since Sun 2023-09-10 10:59:52 CST; 14min ago
    Process: 2591830 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
    Main PID: 2591855 (mysqld)
    Status: “Server is operational”
    Tasks: 38 (limit: 2272)
    Memory: 372.3M
    CGroup: /system.slice/mysql.service
    └─2591855 /usr/sbin/mysqld

    Sep 10 10:59:51 VM-0-15-ubuntu systemd[1]: Starting MySQL Community Server…
    Sep 10 10:59:52 VM-0-15-ubuntu systemd[1]: Started MySQL Community Server.

    可以看到loaded行的service文件位置,查看后,没有什么异常。

    4、解决问题

      最后解决肯定还是百度找到类似的问题,就是看到有一篇博客说找到mysqld.cnf文件,这就是使用find命令,我之前也尝试过在那几个配置文件手动找,没找到,使用find命令:

    find / -name 'mysqld.cnf' -ls
    
    • 1

    输出:

    782051 4 -rw-r–r-- 1 root root 2220 Sep 10 10:59 /etc/mysql/mysql.conf.d/mysqld.cnf

    原来有这个文件,故进查看配置文件,里面有完整的配置文件模板,是要找的文件,修改配置项bind-addres、mysqlx-bind-address为0.0.0.0。
    接着使用

    service mysql restart
    
    • 1

      重启mysql,奇迹发生了。又是后知后觉,为什么前面port配置生效,但是bind-addres配置不生效,因为这个模板文件里面port配置项是注释的,bind-address是默认的,我写的配置,被后续导入的文件夹里面的配置覆盖了,导致不成功。
      知道是覆盖原因,那么,我们恢复一下之前修改的mysqld.cnf文件,将最先的配置,稍微改下顺序,那是不是也行。

    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
    [mysqld] 
    port=33062 
    bind-address=0.0.0.0
    mysqlx-bind-address = 0.0.0.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    重启mysql,尝试使用ip登录mysql,成功了。
    成功躺完一次坑QAQ

    参考博客:
    记一次Linux修改MySQL配置不生效的问题

  • 相关阅读:
    Linux 信号
    迭代器的封装与反向迭代器
    Liunx文件目录操作命令(cd、pwd、ls、mkdir、rmdir)
    算法 数据结构 递归插入排序 java插入排序 递归求解插入排序算法 如何用递归写插入排序 插入排序动图 插入排序优化 数据结构(十)
    vue 无限滚动插件 vue-seamless-scroll
    基于springboot实现电子招投标系统【项目源码】
    web中间件漏洞-Jenkins漏洞-弱口令、反弹shell
    sudo -u root whoami && ****无法用root权限执行后续命令的解决办法
    顺序表(删除)
    Vue学习:插槽
  • 原文地址:https://blog.csdn.net/qq_26819733/article/details/132788484