MySQL Fixing World-writable MySql error in Docker错误

MySQL Fixing World-writable MySql error in Docker错误

在使用 Docker 部署 时,你可能会遇到一个被称为 “world-writable” 的错误。在该错误中, 会报告一些权限问题,例如“mysql: [ERROR] [MY-013276] [Server] File ‘/var/run/mysqld/mysqld.pid’ not found (Errcode: 13 “Permission denied”)”。

这个问题发生的原因是 Docker 环境中出现了权限问题,可以通过以下两种方法来解决。

阅读更多:

(adsbygoogle = window.adsbygoogle || []).push({});

(adsbygoogle = window.adsbygoogle || []).push({});

方法 1:更改 MySQL 数据目录的权限

  1. 首先,进入正在运行的MySQL容器。你可以使用以下命令来进入容器:
sudo docker exec -it mysql_container_name /bin/bash

这里的 mysql_container_name 是 Docker 中你启动 MySQL 容器的名称。

  1. 然后,检查 MySQL 数据目录的所有者和组。你可以使用以下命令来检查:
ls -la /var/lib/mysql

如果显示的所有者和组不正确,则可以使用以下命令更改:

chown -R mysql:mysql /var/lib/mysql
这里的 `mysql:mysql` 表示将所有 MySQL 数据目录的所有者和组更改为MySQL。
  1. 最后,退出容器并重新启动 MySQL 容器。你可以使用以下命令来退出容器:
exit

方法 2:在启动容器时设置所需的权限

  1. 在 启动命令之前,SSH 到 Docker 主机并运行以下命令:
sudo chown -R 1000:1000 /your/mysql/data/directory

这里的 /your/mysql/data/directory 表示你 MySQL 数据目录的绝对路径。

  1. 在启动 MySQL 容器时,使用以下语法来挂载新的文件夹,并分配所需的权限:
docker run --name mysql \
    -v /your/mysql/data/directory:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=my-secret-pw \
    -d mysql/mysql-server

观察到 -v 参数,这些参数定义了一个 volume,将 /your/mysql/data/directory 与 Docker 容器的 /var/lib/mysql 映射起来。

总结

在使用 Docker 部署 MySQL 时,”world-writable” 错误是一个可能出现的权限问题。通过更改 MySQL 数据目录的权限或在启动容器时设置所需的权限,你可以解决此问题。使用上述两种方法中的任何一种将允许 MySQL 安全地运行在 Docker 容器中。