gpt4 book ai didi

mysql - Docker - 无法启动mysql权限错误

转载 作者:行者123 更新时间:2023-11-29 21:40:21 33 4
gpt4 key购买 nike

我的 docker 和 mysql 有问题。我已经构建了一个基于phusion/baseimage的图像。我想创建与我的主机(OS X)共享/var/lib/mysql 目录的镜像,因为我不想将数据存储在容器上。

当目录/var/lib/mysql 不共享时一切正常。当我共享这个目录时,mysql服务无法启动。日志中包含有关启动时权限问题的信息。

来自/var/lib 的 ls -la 结果是:

[...]
drwxr-xr-x 1 lc staff 170 Jan 3 16:55 mysql
[...]

mysql 用户应该是所有者。我尝试这样做:

sudo chown -R mysql:mysql mysql/

但是此命令没有返回任何错误,也没有更改所有者。

我还尝试将我的用户(从容器)添加到 mysql 组:

lc@cbe25ac0681e:~$ groups lc
lc : lc sudo mysql

但它也不起作用。有人知道如何解决这个问题吗?

我的 docker-compose.yml 文件:

server:
image: lukasz619/light-core_server
ports:
- "40080:80"
- "40022:22"
- "40443:443"
- "43306:3306"
volumes:
- /Users/lukasz/Workspace/database/mysql:/var/lib/mysql

这是我的 Dockerfile:

FROM phusion/baseimage

RUN apt-get update
RUN apt-get install -y apache2

# Enable SSH
RUN rm -f /etc/service/sshd/down
RUN /etc/my_init.d/00_regen_ssh_host_keys.sh

# public key for root
ADD public_key.pub /tmp/public_key.pub
RUN cat /tmp/public_key.pub >> /root/.ssh/authorized_keys && rm -f /tmp/public_key.pub

EXPOSE 80
CMD ["/sbin/my_init"]
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

最佳答案

当我们说用户在容器和主机之间共享时,这并不完全正确;实际上共享的是 UID。这意味着容器中名为 mysql 的用户很可能与主机上名为 mysql 的用户具有不同的 UID。

我们可以尝试通过使用图片设置权限来解决这个问题:

docker run --user root lukasz619/light-core_server chown -R mysql:mysql /var/lib/mysql

这可能有效,具体取决于您设置图像的方式。中间运行的虚拟机还带来了进一步的复杂性。

关于mysql - Docker - 无法启动mysql权限错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34579278/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com