原文链接:https://blog.yexuejc.top/articles/2020/07/31/1596182071686.html
短链
记坑一小笔
[图片上传失败...(image-ac2685-1596593853672)]
还原坑的场景
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-6d698d-1596593853672)]
重启容器 docker restart mysql5726
然后就发现:没生效😭 ,开始怀疑人生😂
查看日志吧
[图片上传失败...(image-b0ec52-1596593853672)]
被忽略了??? so what ?
本地配置文件虽然映射过去了,MySQL对于配置文件的权限会检查,所以给忽略了。
自我怀疑中:我明明都给了最大权限了,还不对?既然最多的权限不对,那么肯定是给多了
查看了资料后发现这里给多了一个其他用户的w权限
修改如下
chmod o-w my.cnf
[图片上传失败...(image-8a78ea-1596593853672)]
然后重启生效了
ps:为啥不能多那个其他用户写的权限:不让其他用户修改这个文件,这也是一种保护