centos系统版本
[root@localhost mysql5.7]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
docker版本
拉取指定版本镜像
docker pull mysql:5.7.28
docker images
创建挂载目录(数据存储在centos的磁盘上)
mkdir -p /app/software/docker-dir/mysql5.7/conf
mkdir -p /app/software/docker-dir/mysql5.7/logs
mkdir -p /app/software/docker-dir/mysql5.7/mysql
创建my.cnf 文件
touch /home/dockerdata/mysql/conf/my.cnf
vim /home/dockerdata/mysql/conf/my.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_connections = 2000
max_user_connections = 1900
max_connect_errors = 100000
max_allowed_packet = 50M
lower_case_table_names=1
创建docker容器并运行
docker run -p 3307:3306 --name mysql57 -v /app/software/docker-dir/mysql5.7/conf/my.cnf:/etc/mysql/my.cnf -v /app/software/docker-dir/mysql5.7/logs:/logs -v /app/software/docker-dir/mysql5.7/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.28
解释:
它将创建一个名为 mysql57
的容器,并基于 mysql:5.7.28
镜像运行。
现在,让我们逐个解释每个选项的含义:
-p 3307:3306
:表示将容器的 3306 端口映射到宿主机的 3307 端口。这样,你可以通过宿主机的 3307 端口访问 MySQL 服务。--name mysql57
:指定容器的名称为mysql57
。-v /app/software/docker-dir/mysql5.7/conf/my.cnf:/etc/mysql/my.cnf
:将宿主机上的/app/software/docker-dir/mysql5.7/conf/my.cnf
文件挂载到容器的/etc/mysql/my.cnf
路径。这样,你可以使用自定义的 MySQL 配置文件。-v /app/software/docker-dir/mysql5.7/logs:/logs
:将宿主机上的/app/software/docker-dir/mysql5.7/logs
目录挂载到容器的/logs
路径。这样,MySQL 日志将持久化保存在宿主机的/app/software/docker-dir/mysql5.7/logs
目录中。-v /app/software/docker-dir/mysql5.7/mysql:/var/lib/mysql
:将宿主机上的/app/software/docker-dir/mysql5.7/mysql
目录挂载到容器的/var/lib/mysql
路径。这样,MySQL 数据将持久化保存在宿主机的/app/software/docker-dir/mysql5.7/mysql
目录中。-e MYSQL_ROOT_PASSWORD=123456
:设置 MySQL root 用户的密码为123456
。这将在容器启动时将密码传递给 MySQL 服务器。-d
:表示以后台(守护进程)模式运行容器。
启动后查看进程
docker ps
docker CONTAINER-ID logs 可以查看启动日志
docker exec -it <container_name> /bin/bash 进入容器,进行操作
mysql -uroot -p
设置mysql允许远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
exit
注意坑,centos的防火墙
有开启,直接关闭或者放开端口访问
连接
–全部结束