docker 部署 Mysql并实现数据持久化挂载(使用Navicat进行外部连接验证)
不废话,我们直接搬上主菜。
1.docker拉取镜像
docker pull mysql:latest
2.创建数据持久化目录
为了实现数据持久化,我们需要在宿主机上创建几个目录,用于存储MySQL的数据、配置文件和日志文件。
mkdir -p /opt/mysql/{data,conf,logs}
data:用于存储MySQL的数据文件。
conf:用于存储MySQL的配置文件。
logs:用于存储MySQL的日志文件。
3.编写MySQL配置文件
在/opt/mysql/conf目录下创建一个名为my.cnf的配置文件,并添加以下内容:
[client]
port = 3306 ##端口号
default-character-set = utf8mb4 ##客户端默认字符集
[mysql]
default-character-set = utf8mb4 ##mysql 命令行工具使用 utf8mb4 字符集
[mysqld]
port = 3306
basedir = /usr
datadir = /var/lib/mysql
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci ##排序规则:不区分大小写
default-storage-engine = INNODB ##默认存储引擎为 InnoDB(支持事务和外键)
这个配置文件定义了MySQL的端口号、数据目录、字符集和存储引擎等基本设置。
4.启动MySQL容器
docker run -d \
--name mysql-latest \
-p 3306:3306 \
--restart=always \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /opt/mysql/logs:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=输入你自己的密码 \
mysql:latest
-d:后台启动容器
--name mysql-latest:容器命名为mysql-latest
-p 3306:3306:容器3306端口映射到宿主机3306端口
--restart=always:自动重启
-v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /opt/mysql/logs:/var/log/mysql \:把宿主机的目录、配置文件、日志分别挂载到容器相应的位置
-e MYSQL_ROOT_PASSWORD=123456:设置root用户的密码
5.验证Mysql服务:
docker ps

6.使用MySQL的客户端工具连接到MySQL服务,这里选择Navicat
若没有MySQL客户端工具,可以通过这里提供的链接先进行Navicat的下载:
https://blog.csdn.net/camlin/article/details/147079318
根据教程下载完毕之后,连接到刚刚创建的MySQL容器

左边的图标从灰色变成绿色说明连接成功
7.验证数据持久化
进入容器:
docker exec -it mysql-latest bash
登录MySQL:
mysql -u root -p
输入密码,输入正确之后会看到以下界面

然后就可以输入一些sql语句,比如创建数据库,这里我之前创建了一个名为hot dog的数据库所以直接使用了show databases指令

可以看到navicat中也同步出现了hot dog数据库

然后调用该数据库,在里面创建一个表结构,同时放入一些数据
use `hot dog`; ##这里注意因为数据库名称中带了空格这样的特殊字符,所以要用反引号``
CREATE TABLE colddog (
id INT AUTO_INCREMENT PRIMARY KEY, ##定义一个名为 id 的整数类型主键列并设置自增
name VARCHAR(255) NOT NULL, ##定义一个名为 name 的字符串列,不可为空
price DECIMAL(10, 2) ##定义一个名为 price 的小数列
);
INSERT INTO colddog (name, price) VALUES ('经典热狗', 12.99);
##...自己可以多插入几条数据项

设置好数据库之后就可以进行数据持久化验证了
现在停止并删除容器,然后重新启动一个新的容器并挂载相同的数据卷
docker stop mysql-latest
docker rm mysql-latest
##这步也可以直接组合操作docker rm -f mysql-test
##重新启动容器,用上面相同的命令
docker run -d \
--name mysql-latest \
-p 3306:3306 \
--restart=always \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /opt/mysql/logs:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:latest
然后进入容器,通过select指令查看之前创建的数据,发现数据仍然存在,说明数据持久化挂载成功。
8.总结
至此,Mysql部署完毕,希望这篇博客能够帮助到你!
如果你有任何问题或者建议,欢迎在评论区留言。
浙公网安备 33010602011771号