mysql: [Warning] World-writable config file ‘/etc/mysql/conf.d/my.cnf‘ is ignored.

在Docker环境下,由于MySQL配置文件my.cnf具有全局可写权限导致的警告,MySQL忽略了该文件。修改文件权限为644并根据操作系统(如Windows或Linux)相应处理Docker容器的权限,可以成功开启MySQL的binlog功能并消除警告。
摘要由CSDN通过智能技术生成

项目场景:

在需要开启MySQL binlog功能的时候,在my.cnf加了相关配置后,发现一直无法开启

[client]
default_character_set=utf8
[mysqld]
server-id=1
collation_server=utf8_general_ci
character_set_server=utf8
log-bin=mysql-bin
binlog_format=row
expire_logs_days=30

问题描述:

我这里为Docker环境,进入Docker容器后,本地连接的时候看到警告

mysql: [Warning] World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.

在这里插入图片描述


原因分析:

这个警告出现的原因是 MySQL 发现挂载的配置文件 /etc/mysql/conf.d/my.cnf 具有全局可写权限,因此忽略了该文件。MySQL 引擎非常注重安全性和数据完整性。如果配置文件具有全局可写权限,任何用户都可以修改该文件,包括恶意用户。这可能导致潜在的安全风险和数据损坏。为了提高安全性,当 MySQL 检测到挂载的配置文件具有全局可写权限时,它会发出警告并忽略该文件。这样做是为了确保只有授权的用户能够修改配置文件并对 MySQL 进行更改。


在这里插入图片描述

解决方案:

需要修改my.cnf的文件权限

chmod 644 my.inf

这样MySQL会成功读取该文件,如果不是在Docker环境中的小伙伴,到这里就已经解决问题了!在Docker环境中的小伙伴可以接着往下看。

在Docker中,重启Docker 容器,权限是会还原的,所以针对不同的操作系统,需要不同的解决办法

假设我在Windows环境,我的启动命令为

docker run -d -p 3306:3306 --privileged=true -v D:/Dev/mysql5.7.38/log:/var/log/mysql -v D:/Dev/mysql5.7.38/data:/var/lib/mysql -v D:/Dev/mysql5.7.38/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7.38

Windows的权限和Linux不能完全等同,只需要稍微限制一下就可以了,右键my.inf文件,直接勾选只读即可,这样就会正确读取到mysql配置文件,连接的时候也不会有刚才的警告了

在这里插入图片描述

docker restart mysql
docker exec -it mysql bin/bash
ls -l /etc/mysql/conf.d/my.cnf
mysql -uroot -p
SHOW VARIABLES LIKE 'log_bin';

可以看到警告消失,binlog成功开启

在这里插入图片描述

如果为Linux系统,直接将上面步骤的勾选只读文件,改为修改Docker宿主机的my.cnf权限为644即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DanielMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值