docker mysql 中文乱码
发布时间 - 2023-05-13 00:00:00 点击率:次在使用docker容器部署mysql数据库时,有时会出现中文乱码的情况。这是因为mysql默认字符集为latin1,而中文字符需要使用utf-8编码。本文将介绍如何解决docker mysql中文乱码问题。
一、查看当前MySQL字符集
首先,我们需要查看当前MySQL的字符集。可以通过登录到MySQL后使用以下命令:
mysql> show variables like '%char%';
其中,字符集相关的变量有:
- character_set_client:客户端字符集,也就是连接MySQL的客户端所使用的字符集;
- character_set_connection:连接字符集,也就是服务器与客户端之间的字符集;
- character_set_database:数据库字符集,新创建的数据库会按此字符集创建;
- character_set_results:结果字符集,SELECT查询返回的结果所使用的字符集;
- character_set_server:服务器字符集,MySQL服务器本身所使用的字符集。
二、修改MySQL字符集为UTF-8
查看到当前MySQL字符集为Latin1后,我们需要修改为UTF-8。可以通过以下两种方式实现:
- 修改MySQL配置文件
在MySQL配置文件中(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加以下两行内容:
[client] default-character-set=utf8 [mysqld] character-set-server=utf8
其中,[client]用于设置客户端字符集为UTF-8,[mysqld]用于设置服务器字符集为UTF-8。修改完成后重启MySQL服务:
sudo service mysql restart
- 连接MySQL后修改字符集
如果无法修改MySQL配置文件,可以在连接MySQL后手动修改字符集。可以通过以下命令连接到MySQL:
mysql --default-character-set=utf8 -u用户名 -p密码 数据库名
连接成功后,依次执行以下命令修改字符集:
SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_database = utf8; SET character_set_results = utf8; SET character_set_server = utf8;
修改完成后,退出MySQL,再次登录即可生效。
三、在Docker容器中使用UTF-8字符集
由于Docker容器中的MySQL是基于镜像运行的,因此我们需要在镜像中设置UTF-8字符集。可以通过以下Dockerfile来构建MySQL镜像:
FROM mysql:latest ENV MYSQL_ROOT_PASSWORD=root ENV MYSQL_DATABASE=test ENV MYSQL_CHARSET=utf8 ENV MYSQL_COLLATION=utf8_general_ci COPY ./init.sql /docker-entrypoint-initdb.d/
其中,ENV命令用于设置环境变量,MYSQL_CHARSET用于设置MySQL字符集为UTF-8,MYSQL_COLLATION用于设置排序规则为utf8_general_ci。这里还通过COPY命令将初始化脚本init.sql复制到镜像中,用于在启动容器时自动执行。
四、总结
通过以上三个步骤,我们可以在Docker容器中使用MySQL,并且设置字符集为UTF-8,避免中文乱码的问题。当然,如果需要处理多语言字符集,还需根据具体情况进行调整。希望该文章能对大家有所帮助。
# sql
# mysql
# select
# copy
# docker
# 数据库
# 可以通过
# 镜像
# 客户端
# 配置文件
# 完成后
# 两种
# 我们可以
# 重启
# 这是因为
# 能对
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Bootstrap CSS布局之列表
大同网页,大同瑞慈医院官网?
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
制作公司内部网站有哪些,内网如何建网站?
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
iOS中将个别页面强制横屏其他页面竖屏
如何选择PHP开源工具快速搭建网站?
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
Laravel怎么为数据库表字段添加索引以优化查询
如何用花生壳三步快速搭建专属网站?
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
如何在Windows 2008云服务器安全搭建网站?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
网站建设保证美观性,需要考虑的几点问题!
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Laravel如何使用查询构建器?(Query Builder高级用法)
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Python图片处理进阶教程_Pillow滤镜与图像增强
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
js实现点击每个li节点,都弹出其文本值及修改
如何用5美元大硬盘VPS安全高效搭建个人网站?
使用Dockerfile构建java web环境
,南京靠谱的征婚网站?
js代码实现下拉菜单【推荐】
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Python正则表达式进阶教程_复杂匹配与分组替换解析
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
iOS正则表达式验证手机号、邮箱、身份证号等
如何在不使用负向后查找的情况下匹配特定条件前的换行符
怎么用AI帮你为初创公司进行市场定位分析?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
简单实现Android验证码
如何快速生成橙子建站落地页链接?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
网站页面设计需要考虑到这些问题
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
使用spring连接及操作mongodb3.0实例
北京的网站制作公司有哪些,哪个视频网站最好?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
如何基于PHP生成高效IDC网络公司建站源码?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
WordPress 子目录安装中正确处理脚本路径的完整指南
如何在IIS中新建站点并配置端口与物理路径?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
如何构建满足综合性能需求的优质建站方案?
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法


latest
ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_DATABASE=test
ENV MYSQL_CHARSET=utf8
ENV MYSQL_COLLATION=utf8_general_ci
COPY ./init.sql /docker-entrypoint-initdb.d/