一、Docker启动MySQL容器
在使用Docker启动MySQL之前,我们需要先检查本地是否已经有MySQL镜像,如果没有,需先下载。我们可以通过以下命令来检查本地是否已有MySQL镜像:
docker images | grep mysql
如果本地没有MySQL镜像,我们可以再终端中通过以下命令下载MySQL镜像:
docker pull mysql
下载完成后,我们可以通过以下命令启动MySQL容器:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
这里解释一下各个参数的意义:
--name mysql
指定容器名称为mysql,可以根据实际需要进行修改;-p 3306:3306
端口映射,将容器中MySQL的3306端口映射到主机的3306端口;-e MYSQL_ROOT_PASSWORD=123456
设置MySQL的root用户的密码为123456;-d mysql
后台运行mysql镜像。
启动后,我们可以通过以下命令检查容器是否已经启动:
docker ps -a | grep mysql
如果返回结果中能看到mysql容器,说明已经成功启动。
二、Docker访问不到MySQL
在使用Docker启动MySQL容器时,可能会遇到Docker容器无法访问MySQL的情况。这时我们需要检查以下两方面:
- 是否设置了正确的端口映射;
- MySQL是否启动。
如果端口映射正确,可以通过以下命令检查MySQL是否正常启动:
docker logs mysql | grep password
如果返回类似于以下结果,则说明MySQL已正常启动:
2021-07-21T02:27:06.427867Z 1 [System] [MY-011011] [Server] mysqld: ready for connections. Version: '8.0.11' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server - GPL.
2021-07-21T02:27:06.460330Z 1 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.11).
2021-07-21T02:27:09.288095Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.11) MySQL Community Server - GPL.
三、Docker启动MySQL 8.0
如果需要启动MySQL 8.0版本,可以通过以下命令启动:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
四、Docker启动MySQL立马停止
有时候我们启动MySQL容器后会立即停止,这很有可能是因为MySQL配置文件没有正确设置。
我们可以通过以下命令来启动MySQL,并指定一个本地的MySQL配置文件:
docker run --name mysql -p 3306:3306 -v /your-path/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql
通过该命令,我们将本地的一个my.cnf文件挂载到了容器的/etc/mysql/my.cnf路径下,这样就可以保证MySQL的配置文件正确设置。
五、Docker启动MySQL镜像命令
以下是常用的启动MySQL镜像命令:
# 拉取MySQL镜像
docker pull mysql
# 启动MySQL 5.7
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 启动MySQL 8.0
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
# 启动MySQL 5.7 并指定数据存放路径
docker run -d --name mysql \
-v /your-path/mysql/data:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
# 启动MySQL 8.0 并指定数据存放路径
docker run -d --name mysql \
-v /your-path/mysql/data:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0
六、Docker启动MySQL容器时添加地址
有时候我们的MySQL需要绑定到指定的IP地址上,这时我们可以通过以下命令启动MySQL容器:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql --bind-address=0.0.0.0
这里通过--bind-address=0.0.0.0
参数绑定MySQL的IP地址为0.0.0.0,表示MySQL绑定所有的IP地址。
七、Docker启动MySQL失败
如果启动MySQL失败,我们可以先删除已有的容器,然后再重新启动,可以通过以下命令删除容器:
docker rm -f mysql
然后再按照前面的步骤重新启动即可。
八、Docker启动MySQL指定配置文件
有时候我们需要在启动MySQL容器时指定一个配置文件,这时我们可以通过以下命令启动MySQL容器:
docker run --name mysql \
-v /your-path/my.cnf:/etc/mysql/my.cnf \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql --defaults-file=/etc/mysql/my.cnf
这里通过-v /your-path/my.cnf:/etc/mysql/my.cnf
参数指定了MySQL的配置文件路径,通过--defaults-file=/etc/mysql/my.cnf
参数指定配置文件。
九、Docker启动MySQL容器没有权限
有时候我们在启动MySQL容器时可能会出现权限问题,这时我们可以通过以下命令启动容器,并将MySQL数据目录和/config目录权限都设置为777:
docker run --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /your-path/data:/var/lib/mysql \
-v /your-path/config/mysql:/etc/mysql/conf.d \
-v /your-path/logs/mysql:/logs/mysql \
-d mysql
# 设置数据目录和/config目录权限为777
docker exec mysql chmod 777 -R /var/lib/mysql
docker exec mysql chmod 777 -R /etc/mysql/conf.d
这里我们通过docker exec
命令进入到容器中,然后通过chmod
命令设置目录权限。
总结
本文从多个方面详细阐述了Docker启动MySQL的过程,包括:启动MySQL容器、访问不到MySQL、启动MySQL 8.0、启动MySQL立马停止、指定MySQL配置文件、指定MySQL地址和启动MySQL失败等问题的解决方案。