MySQL Fixing World-writable MySql error in Docker错误
在使用 Docker 部署 MySQL 时,你可能会遇到一个被称为 “world-writable” 的错误。在该错误中,MySQL 会报告一些权限问题,例如“mysql: [ERROR] [MY-013276] [Server] File ‘/var/run/mysqld/mysqld.pid’ not found (Errcode: 13 “Permission denied”)”。
这个问题发生的原因是 Docker 环境中出现了权限问题,可以通过以下两种方法来解决。
阅读更多:MySQL 教程
方法 1:更改 MySQL 数据目录的权限
- 首先,进入正在运行的MySQL容器。你可以使用以下命令来进入容器:
sudo docker exec -it mysql_container_name /bin/bash
这里的 mysql_container_name
是 Docker 中你启动 MySQL 容器的名称。
- 然后,检查 MySQL 数据目录的所有者和组。你可以使用以下命令来检查:
ls -la /var/lib/mysql
如果显示的所有者和组不正确,则可以使用以下命令更改:
chown -R mysql:mysql /var/lib/mysql
这里的 `mysql:mysql` 表示将所有 MySQL 数据目录的所有者和组更改为MySQL。
- 最后,退出容器并重新启动 MySQL 容器。你可以使用以下命令来退出容器:
exit
方法 2:在启动容器时设置所需的权限
- 在 SQL 启动命令之前,SSH 到 Docker 主机并运行以下命令:
sudo chown -R 1000:1000 /your/mysql/data/directory
这里的 /your/mysql/data/directory
表示你 MySQL 数据目录的绝对路径。
- 在启动 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 容器中。