版本8.0.11
Win:my.ini
Linux:my.cnf
1.修改mysql配置文件
[client] default-character-set = utf8mb4 [mysql] ; 设置mysql客户端默认字符集 default-character-set=utf8mb4 [mysqld] ;设置3306端口 port = 3306 ; 设置mysql的安装目录 basedir=E:\mysql\mysql-8.0.11-winx64 ; 设置mysql数据库的数据的存放目录 datadir=E:\mysql\mysql-8.0.11-winx64\data ; 允许最大连接数 max_connections=200 ; 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8mb4 ; 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB collation-server = utf8mb4_unicode_ci character-set-client-handshake = FALSE init_connect='SET NAMES utf8mb4'
2.修改database/table和column的字符集
进入mysql中,按下述所示进行命令的执行:
1) 修改database的字符集:
ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
示例:
ALTER DATABASE xxxdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
2) 步骤1)执行完成之后,需要执行use 数据库名,指明当前需要进行字符集修改的数据库;示例:use xxxdb;
3)修改table的字符集:
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
示例:
ALTER TABLE user_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
4) 修改column的字符集:
ALTER TABLE 表名 CHANGE 字段名 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
示例:
ALTER TABLE user_comments CHANGE content content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
上述修改完毕,exit退出mysql
3.重启mysql
这里重启的时候我一开始用的是service mysql restart,最后发现这条命令并不管用,重启没有成功,导致后面查看字符集的时候,并没有达到想要的字符集的状态。 所以采用下面的方法才可以正确的重启mysql. 3.1停止msql的运行 通过/etc/init.d/mysql执行stop命令 3.2启动mysql 通过/etc/init.d/mysql执行start命令
停止msql的运行 net stop mysql命令
启动mysql net start mysql命令
4.检查字符集
进入mysql中,用SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';命令查看字符集的情况