怎么在docker容器的mysql的编码格式变为utf8
第一个方法:
1、 编辑MySql的配置文件
MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一般是/etc/my.cnf
--在 [mysqld] 标签下加上以下内容:
default-character-set = utf8
character_set_server = utf8
注意:如果此标签下已经存在“default-character-set=GBK”类似的内容,只需修改即可。
--在 [mysql] 标签下加上一行
default-character-set = utf8
--在 [mysql.server]标签下加上一行
default-character-set = utf8
--在 [mysqld_safe]标签下加上一行
default-character-set = utf8
--在 [client]标签下加上一行
default-character-set = utf8
2、 重新启动MySql服务
Windows可在服务管理器中操作,也可使用命令行:
net stop mysql 回车
net start mysql 回车
服务名可能不一定为mysql,请按自己的设置
Linux下面可是用 service mysql restart
第二个方法:
设置外部访问的编码
set names "utf8";

然后查看表中的中文是否改变,好像只是暂时改变的。
第三个方法:
手把手教你如何在mysql 中使用中文编码
1.首先在docker中拉取好一个最新的mysql镜像以后,创建一个容器:

docker run -d -p 13306:3306 -e MYSQL_ROOT_PASSWORD=xxxxxx--name MYDB mysql
参数的解释:
- -d 设置detach为true
- -p port 映射端口 13306
- -e environment 设置密码 xxxxx
2. docker ps 查看mysql容器是否启动,进去容器

docker exec -ti xxx(容器id) /bin/bash
理论上应该启动正常 进去容器内部
3.查看mysql密码 是否正常
mysql -u root -p
在提示下输入密码 xxxxx 正常情况下,应该出现以下提示符mysql>

!!重点来了!!
1.前期工作 查看当前mysql字符集情况
mysql>SHOW VARIABLES LIKE 'character_set_%';//查看数据库字符集
基本上都如下图所示:默认就是瑞典latin1

SHOW VARIABLES LIKE 'collation_%';

图上的第一个 connection 就是我们通过workbench等客户端连接的时候指定的编码。
外部访问数据乱码的问题就出在这个connection连接层上
1.先解决外部访问数据乱码的问题
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
2.创建数据库,创建表的时候,包括设置字段的时候也要加上字符集设置:
例如
create database MYDB character set utf8; use JSPDB;
create table t_product(
pid varchar(20),
pname varchar(20),
price double,
address varchar(30)
) DEFAULT CHARSET=utf8;
3.如果你应经有建立了数据库,也可以通过以下语句修改字符集
当然 如果是刚刚建容器的时候 我想你肯定是没有数据库的,所有此步跳过
alter database name character set utf8;#修改数据库成utf8的.
alter table type character set utf8;#修改表用utf8.
alter table type modify type_name varchar(50) CHARACTER SET utf8;#修改字段用utf8
4.这一步是很重要的来修改配置文件
mysql容器的配置文件在哪呢?
我们进去容器。不输入mysql -u root -p(即登录数据库)
配置文件在etc/mysql/mysql.conf.d/mysql.cnf这个文件里头

我们找到这个文件 编辑他vi mysql.cnf,在使用docker容器时键入vim命令时提示:
vim: command not found
这个时候就需要安装vim
这时候需要敲:
apt-get update
等更新完毕以后再敲命令:
apt-get install vim
然后你发现vim 编辑器可以使用以后,在此文件中添加如下字段
在 [mysqld] 标签下加上三行
default-character-set = utf8
character_set_server = utf8
在 [mysql] 标签下加上一行
default-character-set = utf8
在 [mysql.server]标签下加上一行
default-character-set = utf8
在 [mysqld_safe]标签下加上一行
default-character-set = utf8
在 [client]标签下加上一行
default-character-set = utf8
修改结果如下:

那么如何检验成功了呢?
还记得我们怎么检查mysql字符集编码的吗 ?
SHOW VARIABLES LIKE 'character_set_%';

我们发现有很多都变成utf8了
SHOW VARIABLES LIKE 'collation_%';

以上基本的工作都做完了。
怎么在docker容器的mysql的编码格式变为utf8的更多相关文章
- Docker容器中MySQL最大连接数被限制为214的解决方案
原文:Docker容器中MySQL最大连接数被限制为214的解决方案 一.背景 话说笔者在上次的博客里简单的讲了一下调整MySQL最大连接数的方法.在文章的最后笔者提到了还有一些特殊情况比如说Dock ...
- Docker容器启动Mysql,Docker实现Mysql主从,读写分离
Docker容器启动Mysql,Docker实现Mysql主从,读写分离 一.Docker文件编排 二.配置主从复制 2.1 配置master 2.2 配置slave 三.验证主从复制 3.1 mas ...
- Docker容器内Mysql大小写敏感方案解决
Docker容器内Mysql大小写敏感方案解决 一.(lower_case_table_names)参数说明 二.Docker 部署 MySql 并修改为大小写不敏感 2.1直接在Docker启动的时 ...
- docker 容器的mysql主从复制
一. 1.首先拉取docker镜像,我们这里使用5.7版本的mysql: docker pull mysql:5.7 2.分别启动主从两个容器: docker run -p 3339:3306 - ...
- docker容器下mysql更改WordPress的site address和home(URL)------局域网
先简单介绍下,用docker安装的WordPress,mysql是在docker容器中的,并未在Ubuntu(我把WordPress是安装Ubuntu系统上),即WordPress和Ubuntu是独立 ...
- 使用docker容器运行MySQL数据库并持久化数据文件
1.下载mysql镜像 # docker pull mysql 2.启动mysql容器 # docker run -itd -v /data:/var/lib/mysql -p 33060:3306 ...
- Docker容器部署Mysql数据库服务器
本节会用到的Docker命令如下: docker images 查看mysql镜像id docker run -d -p xxxxxxxxxxxxxxx/zhufc/mysql:v2 通过镜像生成 启 ...
- Xshell终端连接CentOS7.0下Docker容器中的MySql镜像后无法键入中文问题
首先在宿主机输入env 查看LANG 或者 locale 查看 LANG 发现本地使用的字符集是: zh_CN.UTF-8 然后执行 docker exec -it mysql bash 进入dock ...
- 在docker中安装mysql
#!/bin/sh # 安装docker # 在docker中安装mysql # 解决了docker容器中无法输入中文的问题 ##########################安装docker # ...
随机推荐
- Linux 文件系统IO性能优化
对于LINUX SA来说,服务器性能是需要我们特别关注的,包括CPU.IO.内存等等系统的优化变得至关重要,这里转载一篇非常不错的关于IO优化的文章,供大家参考和学习: 一.关于页面缓存的信息,可以用 ...
- oracle角色(role)概念
一个角色是一组特权,它可以授权给用户或其它角色. 特权有:create table,select on boss ,create session,insert on boss,update on bo ...
- Circling Round Treasures CodeForces - 375C
C. Circling Round Treasures time limit per test 1 second memory limit per test 256 megabytes input s ...
- Hadoop实战-Flume之Sink Failover(十六)
a1.sources = r1 a1.sinks = k1 k2 a1.channels = c1 # Describe/configure the source a1.sources.r1.type ...
- 基于 HTTP 协议的几种实时数据获取技术(转)
HTTP协议 HTTP协议大家都很熟悉了,开始本文之前,首先简单回顾一下HTTP协议. HTTP协议是建立在TCP协议上的应用层协议,协议的本质是请求----应答: 即对于HTTP协议来说,服务端给一 ...
- 使用Fiddler测试HTTP接口
Fiddler下载地址:https://www.telerik.com/download/fiddler/fiddler4 在测试http接口前,为避免干扰,我们启用过滤器 然后运行过滤器设置 我们以 ...
- 【题解】P4247 [清华集训]序列操作(线段树修改DP)
[题解]P4247 [清华集训]序列操作(线段树修改DP) 一道神仙数据结构(DP)题. 题目大意 给定你一个序列,会区间加和区间变相反数,要你支持查询一段区间内任意选择\(c\)个数乘起来的和.对1 ...
- 扫盲--.net 程序集
前言:用了几天的时间把高级编程里面程序集一章看完了,原来自己只知道写代码,右键添加引用,从来也不知道操作的实质是什么,微软总是这个套路,鼠标点点就能把任务完成,这对新手友好但是对要通透了解程序执行和内 ...
- python mmap使用记录
1.写文件 with open('??', 'r+b') as f: with contextlib.closing(mmap.mmap(f.fileno(), size, flags=mmap.MA ...
- 【Leetcode-easy】Longest Common Prefix
思路:每次从字符数组中读取两个字符串比较.需要注意输入字符串为空,等细节. public String longestCommonPrefix(String[] strs) { if(strs==nu ...