Docker架设MySql5.7.34服务器

本文详细介绍了如何使用Docker部署MySQL 5.7.34版本,并通过具体步骤指导读者完成容器搭建、配置、测试SQL导入导出等功能,确保数据库稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料:https://hub.docker.com/_/mysql

我们选择5.7.x,在github上,可以看出,在我架设测试和写文章时,版本刚刚更新,最新版本是5.7.34.就在不到一天之前。

https://github.com/docker-library/mysql

一、拉取镜像

docker pull mysql:5.7.34

二、创建挂载文件夹

mkdir -p /var/docker/mysql/conf && mkdir -p /var/docker/mysql/data && chmod -R 777 /var/docker/mysql

三、运行容器

docker run --name mysql -itd \
    -h mysql-server \
    -e MYSQL_ROOT_PASSWORD=root \
    -v /var/docker/mysql/conf:/etc/mysql/conf.d \
    -v /var/docker/mysql/data:/var/lib/mysql \
    -p 3306:3306 \
    --user root:root \
    mysql:5.7.34 \
    --character-set-server=utf8mb4 \
    --collation-server=utf8mb4_general_ci

root用户的默认密码为 root

四、进入容器,登录mysql。

docker exec -it mysql bash
mysql -uroot -proot

查看字符集。

show variables like 'character_set_%';

可以看出,默认的字符集是latin1,我们要将其修改为utf8mb4.

set names 'utf8mb4';

exit退出mysql和容器。

五、客户端远程连接。我们使用DataGrip来连接。我们的IP是192.168.0.78,在hosts中的映射域名为servers.chris.com. 密码root。

连接测试成功。

六、测试SQL导入。我们准备一个sql脚本文件test.sql,把它放在宿主机/var/share目录下。

create database if not exists db_test default character set utf8mb4 collate utf8mb4_general_ci;
use db_test;
create table if not exists tb_user
(
  id      int         not null primary key auto_increment comment 'ID',
  name    varchar(20) not null comment '姓名',
  age     tinyint(3) comment '年龄',
  address varchar(64) comment '地址'
);
insert into tb_user(name, age, address)
values ('Mike', 23, 'BeiJing'),
       ('Rose', 21, 'ShangHai'),
       ('John', 25, 'GuangZhou');

由于新版mysql规定mysqldump执行命令不能把密码暴露在命令行中,所以我们要把密码放在配置文件中。

vi /var/docker/mysql/conf/config.cnf

添加内容:

[client]
user=root
password=root

执行导入命令。

docker exec -i mysql sh -c 'exec mysql' --defaults-file=/var/docker/mysql/conf/config.cnf < /var/share/test.sql

看看结果。

七、测试导出

docker exec mysql sh -c 'exec mysqldump --all-databases' --defaults-file=/var/docker/mysql/conf/config.cnf > /var/share/export_result.sql

看看结果。

这是导出了所有的数据库表。如果要导出指定的库表数据,则执行:

docker exec mysql sh -c 'exec mysqldump -t db_test' --defaults-file=/var/docker/mysql/conf/config.cnf > /var/share/export_test_result.sql

此类导入导出的操作,具体参考mysqldump相关命令。

如果我们的容器出了什么问题,不能启动,我们可以删除容器,重新运行一个。我们会发现,我们对数据库所做的设置,以及脚本导入创建的数据库表记录全部都在。这就是我们为什么要用宿主机挂载配置文件和数据文件的原因。就算将来要换一个服务器,我们也可以很方便地实现数据移植。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值