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配置不生效的问题

你可能感兴趣的:(数据库,mysql)