关于docker容器启动时没有权限出现错误:chown: changing ownership of '/var/lib/mysql/': Permission denied
一、出现问题
一、报错情况
在未关闭selinux时输入创建docker容器命令
docker run --name mysql -p 3306:3306 -v /etc/mysql:/var/lib/mysql -v /etc/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD='root' --restart=always -d mysql:5.7.37
报错
二、解决思路
映射时宿主机的地址为/etc/mysql,容器的地址为/var/lib/mysql,报错情况显示的是对于docker容器里面的/var/lib/mysql没有读写操作权限,是由于在这个mysql容器中,它的所有者是mysql,而我们使用的docker run命令的在宿主机上操作的是root用户,而在docker容器里面宿主机的root用户只是相当于普通用户,而没有root用户的那种权限。
解决方法:
1.在使用docker run命令的时候将“--privileged=true” 这个参数添加
如:
docker run --name mysql --privileged=true -p 3306:3306 -v /etc/mysql:/var/lib/mysql -v /etc/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD='root' --restart=always -d mysql:5.7.37
注意:docker有比较强的命令规范性
只能将--privileged=true这个参数写在拉取镜像前面即 -d 前面
而不能写在后面,写在后面会报错如下
2.永久性解决,直接关闭电脑的selinux
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
不想重启就使用这条命令
setenforce 0
或者使用命令
sed -i 's/enforcing/disabled/' /etc/selinux/config
再使用命令
setenforce 0
__EOF__

本文链接:https://www.cnblogs.com/ayheng/p/16112164.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构