作者:潇洒看不惯_185 | 来源:互联网 | 2024-11-14 10:49
在使用 CentOS 7 和 MySQL 5.6 镜像时,可能会遇到启动数据库时的权限问题。以下是具体的错误情况和解决方法。
当执行以下命令时:
docker run -u 0 ***
会收到如下错误信息:
2017-08-10 20:00:51 66 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
这表示 MySQL 不允许以 root 用户身份运行。为了解决这个问题,可以尝试使用非 root 用户来运行容器。
当执行以下命令时:
docker run -d --name mysql_test -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /etc/mysql:/etc/opt/rh/rh-mysql56/my.cnf.d -e MYSQL_ROOT_PASSWORD=abc123 -p 3306 centos/mysql-56-centos7
会收到如下错误信息:
/usr/bin/run-mysqld: line 14: /etc/my.cnf.d/base.cnf: Permission denied
这表示 MySQL 无法读取配置文件,可能是由于权限问题。可以尝试更改文件夹的权限:
chown -R mysql:mysql /etc/mysql
如果上述方法仍然无效,可以尝试使用官方的 MySQL 5.6.34 镜像,并且不使用自定义的 cnf 文件。这样可以确保容器能够正常启动。
如果需要使用自定义的 cnf 文件,可以尝试以下命令:
docker run -d --name mysql_test -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /etc/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=abc123 -p 3306 centos/mysql-56-centos7
启动容器后,检查容器的状态。如果没有报错,可以查看日志以确认数据库是否成功初始化:
docker logs mysql_test
日志内容可能包括以下信息:
Initializing database
2017-08-11 03:09:18 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-08-11 03:09:18 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
2017-08-11 03:09:18 0 [Note] /usr/sbin/mysqld (mysqld 5.6.37-log) starting as process 36 ...
2017-08-11 03:11:04 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-08-11 03:11:04 0 [Note] mysqld (mysqld 5.6.37-log) starting as process 1 ...
通过以上步骤,可以有效解决在 CentOS 7 环境中启动 MySQL 5.6 容器时遇到的权限问题。