【无标题】

引言

在本教程中,我们将通过 Docker 快速部署 MySQL 5.7 数据库服务,并深入解决在使用过程中可能遇到的字符集问题。此过程不仅涉及基本的安装步骤,还会详细介绍如何利用 Docker 数据卷(volume)来持久化数据以及优化配置,确保数据库支持中文字符的正确存储与查询。

准备工作
  • 确保已安装 Docker。
  • 确认宿主机的 3306 端口未被其他服务占用。
步骤一:拉取 MySQL 镜像

打开终端或命令行工具,执行以下命令以下载 MySQL 5.7 版本的官方镜像:

docker pull mysql:5.7
步骤二:运行 MySQL 容器

执行以下命令启动 MySQL 容器。此命令将宿主机的 3306 端口映射到容器的 3306 端口,并设置了 root 用户的默认密码为 123456。同时,使用 --privileged 参数给予容器更高的权限,以便处理可能的权限问题。

docker run -d -p 3306:3306 --privileged=true \
  -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
步骤三:挂载数据卷

初次尝试可能未考虑数据持久化和配置文件的外部化。若在使用中遇到中文字符插入错误,需采取以下步骤进行修正。

  1. 停止并移除之前的容器

    docker stop mysql
    docker rm mysql
    
  2. 使用数据卷挂载:重新运行容器,挂载宿主机的目录到容器的对应目录,确保数据、日志和配置文件的持久化。

    docker run -d -p 3306:3306 --privileged=true \
      -v /usr/local/mysql/log:/var/log/mysql \
      -v /usr/local/mysql/data:/var/lib/mysql \
      -v /usr/local/mysql/conf:/etc/mysql/conf.d \
      -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
    

    这里分别挂载了日志、数据和配置文件夹。

步骤四:配置字符集
  1. 创建配置文件:在宿主机的 /usr/local/mysql/conf 目录下创建 my.cnf 文件。

    cd /usr/local/mysql/conf
    vim my.cnf
    

    my.cnf 中添加以下内容:

    [client]
    default_character_set=utf8
    
    [mysqld]
    collation_server=utf8_general_ci
    character_set_server=utf8
    

    保存并退出。

  2. 重启容器,使新的配置生效:

    docker restart mysql
    
步骤五:验证与测试
  1. 检查字符集:进入容器,检查 MySQL 的字符集设置是否已更正。

    docker exec -it mysql bash
    mysql -u root -p
    

    登录后执行 SHOW VARIABLES LIKE '%character%'SHOW VARIABLES LIKE '%collation%' 查看字符集设置。

  2. 创建数据库和表:在 MySQL 提示符下,创建数据库、表,并尝试插入中文数据,验证中文存储功能是否正常。

  3. 本地工具测试:使用 Navicat 或其他数据库管理工具连接至宿主机的 3306 端口,测试中文数据的插入、查询是否正常。

总结

通过上述步骤,我们不仅成功利用 Docker 部署了 MySQL 服务,还解决了中文字符插入失败的问题。数据卷的使用不仅保证了数据的持久性,也让配置文件的修改更加灵活和安全。现在,你拥有了一个稳定、支持中文的 Docker 化 MySQL 环境,适合开发、测试乃至生产环境的应用。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值