我的环境:centos7
1.操作步骤
安装好docker,我的镜像是
bash
{
"registry-mirrors": [
"https://hub.rat.dev/",
"https://docker.1panel.live/",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://dockerproxy.com"
]
}
配置文件所在目录:/etc/docker/daemon.json,我也尝试过aliyun的加速器,但是似乎没有效果,百度了很久,毫无所获,就先用这个镜像了。
安装mysql5.7版本,mysql8会有另外一些坑,因为只是用来学习,所以就用mysql5.7了。
bash
docker pull mysql:5.7
安装完毕后,用下面的命令来运行:
bash
docker run --privileged=true --name mysql-server \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf.d:/etc/mysql/conf.d \
-v /data/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7
参数解释
--privileged=true
:给予容器扩展的权限,通常用于需要访问底层设备或执行特权操作的场景。--name mysql-server
:为容器指定一个名称,方便后续对容器进行管理和操作。-v /data/mysql/data:/var/lib/mysql
:将主机上的/data/mysql/data
目录挂载到容器中的/var/lib/mysql
目录,用于存储 MySQL 的数据文件。-v /data/mysql/conf.d:/etc/mysql/conf.d
:将主机上的/data/mysql/conf.d
目录挂载到容器中的/etc/mysql/conf.d
目录,用于存放 MySQL 的配置文件,可以通过在主机目录中放置配置文件来定制 MySQL 的配置。-e MYSQL_ROOT_PASSWORD=123456
:设置 MySQL 的 root 用户密码为 "123456"。-p 3306:3306
:将主机的 3306 端口映射到容器的 3306 端口,使得可以从主机或外部网络访问容器中的 MySQL 服务。-d
:以守护式(后台)模式运行容器。mysql:5.7
:指定要运行的镜像为 MySQL 5.7 版本。
因为用docker安装mysql默认字符集是Latin,所以要配置字符集,挂载了数据卷后,我们去新建一个配置。
bash
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
位置:/data/mysql/conf.d
关闭mysql
bash
docker stop mysql-server
启动mysql
bash
docker stop mysql-server
默认账号密码为root,123456
为了可以在本地通过工具直连数据库,服务器要开放3306端口。
端口相关命令可以参考 linux防火墙开放指定端口命令-阿里云开发者社区
2.技术验证
本地用工具,比如navicat连接,随便创建一张表,插入中文试试。
验证通过。
服务器看下挂在的data数据卷:/data/mysql/data
test是我新创建的库,验证通过。