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'

输出:

/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/

增加启动参数后:

[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/

修改启动端口和绑定地址,发现端口修改生效,但是绑定地址不生效确定配置文件没问题

看了下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';

看值是否为127.0.0.1

  • 查看系统端口监听:

    netstat -anp | grep 3306

看是否出现127.0.0.1:3306

  • 查看是否能指定ip登录上:

    mysql -u root -proot -h 你的ip -P 33062

看是否能登录上,不能登录的,先把用户管理里面用户的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"

输出:

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

输出:

● 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

输出:

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

重启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

重启mysql,尝试使用ip登录mysql,成功了。

成功躺完一次坑QAQ

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

相关推荐
dengjiayue6 小时前
MySQL 查询大偏移量(LIMIT)问题分析
数据库·mysql
言之。7 小时前
【MySQL】在MySQL中如何定位慢查询?
数据库·mysql
Suwg2097 小时前
【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存
数据库·笔记·mysql
PittDing7 小时前
【更新】Docker新手入门教程2:在Windows系统通过compose创建多个mysql镜像并配置应用
windows·mysql·docker
m0_672449608 小时前
前后端分离(前端删除数据库数据)
java·数据库·mysql
林农8 小时前
C05S16-MySQL高可用
linux·mysql·云计算
后端转全栈_小伵8 小时前
MySQL外键类型与应用场景总结:优缺点一目了然
数据库·后端·sql·mysql·学习方法
码中小白鼠8 小时前
Ubuntu系统部署Mysql8.0后设置不区分大小写
linux·mysql·ubuntu·adb
自律的kkk8 小时前
mysql基础快速入门
java·数据库·mysql·oracle
Andy01_9 小时前
Java八股汇总【MySQL】
java·开发语言·mysql