记坑一小笔
还原坑的场景
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
这种操作模式,改完如下
重启容器 docker restart mysql5726
然后就发现:没生效 😭 ,开始怀疑人生 😂
查看日志吧
被忽略了??? so what ?
本地配置文件虽然映射过去了,MySQL 对于配置文件的权限会检查,所以给忽略了。
自我怀疑中:我明明都给了最大权限了,还不对?既然最多的权限不对,那么肯定是给多了
查看了资料后发现这里给多了一个其他用户的 w 权限
修改如下
chmod o-w my.cnf
然后重启生效了
ps:为啥不能多那个其他用户写的权限:不让其他用户修改这个文件,这也是一种保护
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于