• docker-compose 启动mysql 容器时 error.log 无权限访问怎么办?


    场景分析

    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]# 
    
  • 相关阅读:
    sql插入临时表数据的方法
    bootstrap中模态框、模态框的属性
    前台页面实现拖拽图片,拖拽图片排序
    生成二维码,二维码的生成
    bootstrap表格分页
    Python 处理Excel内的数据(案例介绍*2)
    微博数据抓取练习
    微信小程序开发笔记(二)
    微信小程序开发笔记(一)
    UCI 人口收入数据分析(python)
  • 原文地址:https://www.cnblogs.com/yinguohai/p/13520005.html
Copyright © 2020-2023  润新知