场景分析

docker-compose 运行mysql 容器的时候一直报下面的错误:

.../var/log/mysql/mysql-error.log' for error logging: Permission denied"

问题分析

出现这个问题,主要是容器中启动MySQL 服务的是 mysql 用户。而我们宿主机中是没有mysql 这个用户存在的,所以产生了 Permission denied 这个错误类型。

解决问题

直接进入到mysql 容器中,查看MySQL 用户的相关信息

root@319ea9cea30b:/var/log# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/usr/sbin/nologin

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin

mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin

proxy:x:13:13:proxy:/bin:/usr/sbin/nologin

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

backup:x:34:34:backup:/var/backups:/usr/sbin/nologin

list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin

irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin

gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin

nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin

_apt:x:100:65534::/nonexistent:/usr/sbin/nologin

mysql:x:999:999::/home/mysql:/bin/sh

root@319ea9cea30b:/var/log#

说明:

/etc/passwd 的文件格式:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

所以,MySQL容器启动MySQL 服务是用的mysql 用户。因此,我们可以在启动容器的时候,直接在容器中去运行一个创建error.log 的命令即可。

成功案例,MySQL

项目目录结构

[root@iZwz93izbw8wks6an5uggxZ mysql]# ls -l

total 16

drwxr-xr-x 2 root root 4096 Aug 17 18:06 conf

drwxr-xr-x 2 polkitd root 4096 Aug 17 20:37 data

-rw-r--r-- 1 root root 464 Aug 17 20:31 docker-compose.yml

drwxr-xr-x 2 root root 4096 Aug 12 23:56 log

[root@iZwz93izbw8wks6an5uggxZ mysql]# tree

.

|-- conf

| `-- my.cnf

|-- data

|-- docker-compose.yml

`-- log

`-- error.log

3 directories, 3 files

[root@iZwz93izbw8wks6an5uggxZ mysql]#

其中 ,data 是一个空的目录, log目录 下有一个error.log 文件, conf目录下有一个 my.cnf 文件。

my.cnf 内容

[mysql]

[mysqld]

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

datadir = /var/lib/mysql

log-error = /var/log/mysql/error.log

symbolic-links=0

skip-host-cache

skip-name-resolve

[mysqldump]

quick

quote-names

max_allowed_packet = 16M

docker-compose.yml 的内容

version: "3"

services:

mysql:

image: mysql:5.7

container_name: mysql

ports:

- 3306:3306

environment:

MYSQL_ROOT_PASSWORD: root

volumes:

- $PWD/conf:/etc/mysql

- $PWD/data:/var/lib/mysql

- $PWD/log/error.log:/var/log/mysql/error.log

command:

- "--default-authentication-plugin=mysql_native_password"

entrypoint: bash -c "chown -R mysql:mysql /var/log/mysql && exec /entrypoint.sh mysqld"

restart: always

说明:

command 用来指定mysql容器启动后默认执行的命令 ,entrypoint 用来启动容器后需要执行的命令

启动容器

利用docker ps 查看正在运行的容器

[root@iZwz93izbw8wks6an5uggxZ mysql]# ls

conf data docker-compose.yml log

[root@iZwz93izbw8wks6an5uggxZ mysql]# docker-compose up -d

[root@iZwz93izbw8wks6an5uggxZ mysql]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

87ada830457e mysql:5.7 "bash -c 'chown -R m…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

[root@iZwz93izbw8wks6an5uggxZ mysql]#

mysql error.log 权限_docker-compose 启动mysql 容器时 error.log 无权限访问怎么办?相关推荐

  1. docker mysql日志写入本地_Docker Compose搭建MySQL主从复制集群

    转载自https://zhuanlan.zhihu.com/p/45193580 前言 随着应用业务数据不断的增大,应用的 响应速度不断下降,在检测过程中我们不难发现大多数的请求都是 查询操作.此时, ...

  2. idea maven web工程明明添加了maven lib的依赖,但启动web容器时始终报No Class Found?...

    idea maven web工程明明添加了maven lib的依赖,但启动web容器时始终报No Class Found? 很久没用idea搭新工程,最近自己想做个东西,冲心搭个web工程,jar包都 ...

  3. linux 分配权限(sudo mkdir **) 解决创建文件夹无权限问题

    linux 分配权限(sudo mkdir ) 解决创建文件夹无权限 1.## mkdir java 2.## sudo mkdir java 使用sudo来获得root权限创建文件夹 提示当前管理员 ...

  4. Win10 Wsl可以装mysql_WSL win10子系统linux-ubuntu 安装mysql root用户远程连接 开机启动mysql服务 用navicat连接登录...

    0.若之前有装过mysql,需要先清除mysql相关的安装信息 apt-get remove mysql-server apt-get autoremove mysql-server apt-get ...

  5. mysql下 ect p_Linux系统下启动MySQL的命令及相关知识

    一.总结一下: 1.Linux系统下启动MySQL的命令: /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: /ect/init. ...

  6. linux mysql 客户端连接,linux系统中启动mysql方式已经客户端如和连接mysql服务器

    零点间的记录 一.启动方式 1.使用linux命令service 启动: service mysqld start 2.使用 mysqld 脚本启动: /etc/inint.d/mysqld star ...

  7. Navicat数据库错误2003 Can not connect to Mysql Server on以及Windows无法启动mysql 错误1069

    今天重启了一下服务器,登录系统后用navicat连接数据库报错.以下是解决办法. Navicat连接数据库时报:错误2003 Can not connect to Mysql Server on()解 ...

  8. 【踩坑】CentOS7部署Vulhub靶场后,在启动漏洞容器时弹出SELinux警告,致使网站无法正常执行文件上传功能。

    目录 1 背景 2 SELinux 概述 3 解决 参考文献 1 背景 为研究网络安全,本人准备在CentOS上部署Vulhub靶场来实现,部署过程参考文章<CentOS上部署Vulhub靶场& ...

  9. mysql数据库文件持久化_Docker之深交Mysql持久化

    哈喽,又和大家见面了,上节提到了关注我一类的问题,虽然结果不是很理想,但是只要有一位朋友支持,我就不能放弃!好了,话不多说,开整! 在上节的Docker数据卷之Mysql持久化中,我们测试完成了关于M ...

最新文章

  1. [vue] 怎么缓存当前打开的路由组件,缓存后想更新当前组件怎么办呢?
  2. oracle 12c缩容磁盘组,oracle 表收缩
  3. Android 调用系统相机拍照,生命周期重走OnCreate,导致无数据的解决办法
  4. 蓝屏代码0x00000109 错误分析
  5. 图像复原技术及其MATLAB实现
  6. Vue3中文文档 - vuejs
  7. Python学习笔记—— 面向对象4.类属性、类方法、静态方法
  8. 创建相册,批量删除,图片预览,上传图片
  9. blk_rq_map_user和blk_rq_map_kern
  10. Hbuilder如何替换选中代码快捷键
  11. @03Python基础语法
  12. 上财计算机专业全国排名,2021软科财经类大学排名,上海财经遥遥领先,东财仅排第六...
  13. 运维之红帽管理员篇-----1. Linux系统简介 、 安装RHEL7系统 、 RHEL7基本操作
  14. 猪脸识别?!阿里和京东这次要AI养猪了
  15. 小技巧:使用谷歌地图查询公交和地铁信息
  16. flask中调用静态文件步骤
  17. 【算法笔记】全域哈希表
  18. python生成试卷制卷系统_Python如何自动生成考试试卷?
  19. 图像原始格式(YUV444 YUV422 YUV420)一探究竟
  20. 联想服务器引导盘制作工具,制作支持UEFI引导的U盘在System x服务器上安装Windows Server 2008 R2操作系统...

热门文章

  1. Python2爬虫学习系列教程
  2. 厉害了,BATJ 必考的 Java 面试题!
  3. 框架:Spring事务的隔离级别
  4. 史上最全29个自我管理工具!
  5. python百钱买百鸡问题算法_百钱买百鸡问题的伪代码算法?
  6. 成功解决安装cuda的时候,下载的文件自动消失,并且出现An unknown error has occurred
  7. Py之imblearn:imblearn/imbalanced-learn库的简介、安装、使用方法之详细攻略
  8. ML之FE:特征工程中常用的一些处理手段(缺失值填充、异常值检测等)及其对应的底层代码的实现
  9. HighNewTech:20190824上海人工智能大会(2019SHAI)暨第二届图像视频处理与人工智能国际会议参会感悟记录
  10. DayDayUp:博主,在此,祝愿大家(十五种编程语言输出),2019年春节快乐!猪年诸事大吉!学要有所成,劳要有所获!