【MySQL】设置MySQL字符集
一、实验环境
操作系统: CentOS7.5 Minimal
IP: 192.168.1.102
二、查看MySQL运行状态
# systemctl status mysqld.service
三、设置MySQL字符集
设置MySQL字符集为utf8
# cat /etc/systemd/system/mysqld.service
########################################################
[Unit]
Description=MySQL Server
After=network-online.target docker.service
Requires=docker.service
[Service]
ExecStartPre=-/usr/bin/docker rm -f mysql
ExecStart=/usr/bin/docker run \
--name mysql \
-p 192.168.1.102:3306:3306 \
-e UMASK=0600 \
-e UMASK_DIR=0700 \
-e MYSQL_HISTFILE=/dev/null \
-v /opt/mysqldata:/var/lib/mysql \
-v /opt/mysqlconfig/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
mysql:5.7.20
ExecStop=/usr/bin/docker stop mysql
LimitNOFILE=65535
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
########################################################
# cat /opt/mysqlconfig/mysqld.cnf | grep -Ev "^$|^#"
######################################################
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
symbolic-links = 0
max_connections = 2000
skip_name_resolve
character-set-client-handshake = FALSE
character-set-server = utf8
collation-server = utf8_general_ci
init_connect="SET NAMES 'utf8'"
[mysql]
default-character-set = utf8
[client]
default-character-set = utf8
######################################################
# systemctl restart mysqld
# mysql -u root -h 192.168.1.102 -p"MySQL@123" -e "show variables like 'character_set_%';"
设置MySQL字符集为utf8mb4
# cat /opt/mysqlconfig/mysqld.cnf | grep -Ev "^$|^#"
#####################################################
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
symbolic-links = 0
max_connections = 2000
skip_name_resolve
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect="SET NAMES 'utf8mb4'"
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
#####################################################
# systemctl restart mysqld
# mysql -u root -h 192.168.1.102 -p"MySQL@123" -e "SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';"
四、MySQL中的排序规则utf8_unicode_ci、utf8_general_ci的区别
MySQL中utf8_general_ci与utf8_unicode_ci有什么区别呢?
在编程语言中,通常用unicode对中文字符做处理,防止出现乱码,那么在MySQL里,为什么大家都使用utf8_general_ci而不是utf8_unicode_ci呢?
ci是 case insensitive, 即 "大小写不敏感", x 和 X会在字符判断中会被当做一样的,bin 是二进制, x和 X会别区别对待。
例如你运行: SELECT * FROM table WHERE txt = 'x'
那么在utf8_bin中你就找不到 txt = 'X' 的那一行, 而 utf8_general_ci 则可以
utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储,区分大小写,而且可以存二进制的内容
MySQL5.1中文手册中关于utf8_unicode_ci与utf8_general_ci的说明
如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束。
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。
如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了。
1、对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。
2、utf8_general_ci也适用与德语和法语,除了‘?'等于‘s',而不是‘ss'之外。如果你的应用能够接受这些,那么应该使用 utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。
用一句话概况上面这段话:utf8_unicode_ci比较准确,utf8_general_ci速度比较快。通常情况下 utf8_general_ci的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是utf8_general_ci,所以新建数据 库时一般选用utf8_general_ci就可以了!
五、参考
MySQL数据库字符集设置
https://www.jianshu.com/p/d9dc58f68822
MySQL中utf8和utf8mb4区别
http://ourmysql.com/archives/1402
MySQL 5.7.20 编码由 utf8 改为 utf8mb4
https://www.lovesofttech.com/database/mysql5.7ToUtf8mb4
MySQL使用utf8mb4经验吐血总结
http://seanlook.com/2016/10/23/mysql-utf8mb4
全面了解MySQL中utf8和utf8mb4的区别
https://my.oschina.net/xsh1208/blog/1052781
MySQL utf8 vs utf8mb4 – What’s the difference between utf8 and utf8mb4?
https://www.eversql.com/mysql-utf8-vs-utf8mb4-whats-the-difference-between-utf8-and-utf8mb4
【MySQL】设置MySQL字符集相关推荐
- mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法
MySQL对中文的支持程度还是很有限的,尤其是新手,但凡出现乱码问题,就会头大. 乱码问题1:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了 ...
- mac mysql 默认字符集_MacOS中Mysql设置默认字符集
一.查看字符集 mysql> show variables like 'character%'; +--------------------------+-------------------- ...
- mysql安装设置mysql字符集utf8及修改密码
MySQL的下载,建议下载MySQL的解压缩版本 MySQL官网下载推荐别下最新版本的原因是因为很多之前用的jar包和工具类不兼容最新版本的 可以下5.多的和六点多的 这样的压缩包解压再配置就行了 安 ...
- MySql·设置字符集编码
MySql·设置字符集编码 查看版本号 SELECT version(): 查看数据库的字符编码 命令行登录数据库 mysql -uroot -p 输入: \s 查看字符编码明细 show varia ...
- linux安装mysql、卸载mysql、设置mysql
linux下安装mysql: yum install mysql-server yum install mysql-devel 启动mysql: service mysqld start 卸载mysq ...
- MySQL—01—MySQL介绍和安装
一. MySQL 简介 1 什么是 MySQL MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司.MySQL 是一种关系型数据库管理系统,关系型 ...
- [MySql] - Windows MySql 8.x 手动zip包安装与外网访问登录权限设定
MySql 8.x官方下载地址 https://dev.mysql.com/downloads/mysql/8.0.html https://cdn.mysql.com//Downloads/MySQ ...
- 安装多个mysql及mysql服务
在windows环境下安装多个mysql及mysql服务 第一步:到官网下载所需的mysql,里面含有最新版本和历史版本 第二步:解压mysql文件创建data文件夹,和my.ini 文件 当多个my ...
- MySQL 基础——MySQL 起步
要点 MySQL 8.0 安装步骤 解压mysql-8.0.28-winx64.zip,解压在 D:\SystemConfig\SQL\mysql-8.0.28-winx64 刚解压完是没有data文 ...
- ci框架 乱码 mysql_mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法
mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法 作者:吕海鹏 文章来源:itstudy原创 发表时间:2008-10-18 11:15:08 阅读次数:今日:5 本 ...
最新文章
- air调用java,AIR2.0入门教程:与Java应用交互
- Vista下的程序集缓存卸载方法,也就是C:\Windows\assembly之下的卸载方法
- webpack 实践笔记(一)--- 入门
- 用汇编的眼光看C++(之判断流程)
- 算法学习之循环结构程序设计
- python中transform用法_Python Wand transform()用法及代码示例
- PostgreSQL中的pg_hba.conf
- Android中动态获取Drawable中的图片
- vue php 加载速度,Vue加载优化,速度提高一倍。
- 【Spark】sparksql中使用自定义函数
- MySQL Study之--MySQL下图形工具的使用(phpMyAdmin)
- 如何选择项目管理软件?
- 视频教程:小型登陆系统(完)
- 微软官网下载win10系统
- php代码加nofollow,给WordPress友情链接添加Nofollow方法详解
- 大型3d射击类游戏源码【突击风暴】,中文版本,可私服
- 解决pytorch官网下载慢ubuntu16.04+anaconda3(python3.6)+pytorch0.4.1+cuda9.0+cudnn7.1安装指南
- React从零开始搭建项目
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(五)MockMvc服务端的单元测试
- 攻防世界——pwn_forgot