docker-mysql 使用中的坑

夜雪剑辰[yexuejc] 的个人博客 记录精彩的程序人生 本文由博客端 https://blog.yexuejc.top 主动推送

记坑一小笔
image.png

还原坑的场景

docker 安装 MySQL (版本 5.7.26)
映射配置目录 /etc/mysql 到宿主机 /opt/mysql/conf

docker run -d \
--name mysql5726 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /opt/mysql/conf:/etc/mysql \
-p 3306:3306 \
-d mysql:5.7.26

然后开开心心的写我的 my.cnf【坑 1:window 上的配置文件名称是 my.ini,linux 上的是 my.cnf;习惯 window 环境开发的小伙伴可能会进坑】

编写 my.cnf 内容
1.vi /opt/mysql/conf/my.cnf 粘贴如下内容

[mysqld]
skip-grant-tables
#解决:mysql5.7 timestamp默认值‘0000-00-00 00:00:00’报错
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

ESC>Alt+;> 输入 :wq 保存退出
然后(嗯嗯嗯嗯...权限)Linux 中很注重权限,宿主机上的文件授权给容器使用。网上一般都是 chmod -R 777 /opt/mysql/conf/my.cnf 这种操作模式,改完如下
image.png

重启容器 docker restart mysql5726

然后就发现:没生效 😭 ,开始怀疑人生 😂
查看日志吧
image.png

被忽略了??? so what ?

本地配置文件虽然映射过去了,MySQL 对于配置文件的权限会检查,所以给忽略了。
自我怀疑中:我明明都给了最大权限了,还不对?既然最多的权限不对,那么肯定是给多了

查看了资料后发现这里给多了一个其他用户的 w 权限
修改如下

chmod o-w my.cnf

image.png

然后重启生效了

ps:为啥不能多那个其他用户写的权限:不让其他用户修改这个文件,这也是一种保护

  • 一些有用的避坑指南。

    58 引用 • 82 回帖

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...