目录
Docker:离线安装运行容器报错:container_linux.go:345: starting container process caused
在启动MySQL时报:[ERROR] Fatal error: Please read “Security” section of the manual to find out how to run mysqld as root!
/docker/logs/erorr3888.log文件要先创建
登陆不进去
参考文章
本来我一直使用的是5.7.27版本,但由于此create8使用了比较老的5.5.46,造成诸多问题,一一记录,方便后续
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345:
starting container process caused "process_linux.go:430:
container init caused \"write /proc/self/attr/keycreate: permission denied\"": unknown.
2. 报错原因
“write /proc/self/attr/keycreate: permission denied”
翻译:表示文件没有写入权限,访问被拒绝。
拒绝原因:linux的系统安全性使用selinux控制,selinux会控制用户可以访问、读取、修改哪些文件,比如,前面的write /proc/self/attr/keycreate文件没有权限,就是被selinux控制。
3. selinux三种模式
1. enforcing :强制模式; 代表SELinux在运行中, 且已经开始限制domain/type之间的验证关系。
2. permissive :宽容模式; 代表SELinux在运行中, 不过不会限制domain/type之间的验证关系, 即使验证不正确, 进程仍可以对文件进行操作, 不过如果验证不正确会发出警告。
3. disables :关闭模式; SELinux并没有实际运行。
4. 解决方法
修改/etc/selinux下的config文件中的SELINUX属性改为disabled
解决办法有三种:
第一种:使用root用户启动,命令:
service mysqld start --user=root
由于使用的是docker,修改配置文件
user=mysql
1
第二种:使用非root用户启动,修改my.cnf文件:
进入文件:vim /etc/my.cnf
在[mysqld]下输入内容:user=mysql
1
2
以上两种都不对时,使用第三种:
检查在/etc/init.d目录下是否存在mysqld文件,如果存在直接删掉就可以了,如果不想删,使用mv命令换一个名字,名字任意起。
docker exec -it mysql3888 bash
mysql -uroot
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
然后
mysql -uroot -prooot -P3888 -h127.0.0.1
就可以了。
https://blog.csdn.net/huo_wa/article/details/117550307
(30条消息) Fatal error: Please read “Security“ section of the manual to find out how to run mysqld as root_火娃ღ的博客-CSDN博客
https://blog.51cto.com/u_12835254/5551728