mac下修改mysql默认字符集为utf8

简介:

1、首先检查默认安装的字符集

[html]  view plain  copy
 print ?
  1. mysql> show variables like '%char%';  
  2. +--------------------------+--------------------------------------------------------+  
  3. | Variable_name            | Value                                                  |  
  4. +--------------------------+--------------------------------------------------------+  
  5. | character_set_client     | utf8                                                   |  
  6. | character_set_connection | utf8                                                   |  
  7. | character_set_database   | latin1                                                   |  
  8. | character_set_filesystem | binary                                                 |  
  9. | character_set_results    | utf8                                                   |  
  10. | character_set_server     | latin1                                                   |  
  11. | character_set_system     | utf8                                                   |  
  12. | character_sets_dir       | /usr/local/mysql-5.6.23-osx10.8-x86_64/share/charsets/ |  
  13. +--------------------------+--------------------------------------------------------+  
  14. 8 rows in set (0.00 sec)  

character_set_database和character_set_server依然是latin1的字符集,也就是说mysql后续创建的表都是latin1字符集的,不是utf8,会造成一些麻烦。所以有必要修改my.cnf,在修改my.cnf之前一定要关闭mysql进程,不然会遇到mysql的sock不能连接的问题。


2、查看是否有my.cnf文件在/etc/目录下

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. ls -al /etc/  

检查了一下,发现本机没有my.cnf,查看了很多资料,他们说可以去/usr/local/mysql的安装目录下找到support-files,复制下面格式类似my-**.cnf的文件到/etc/目录下即可。命令如下:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. cp /usr/local/mysql/support-files/my-default.cnf /etc/  


3、修改/etc/my-default.cnf文件名为my.cnf,并修改里面的配置

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. cat /etc/my.cnf  

查看配置文件的内容

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. ls -l /etc/my.cnf  

查看文件的读写权限,如果为644(rw- r-- r--)则改为(664) (rw- rw- r--)

如果改为(666)(rw- rw- rw-)则修改以后配置文件不会生效。下面详细讲解为什么不会生效。

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. sudo chmod 664 /etc/my.cnf  

输入密码即可。


4、修改配置文件内容

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. vi /etc/my.cnf  

在文件最上面加上

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. [client]  
  2. default-character-set=utf8  

在[mysqld]下增加

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. character-set-server=utf8  

键入:wq!保存并退出


5、重新查看编码集

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. mysql> show variables like '%char%';  
  2. +--------------------------+--------------------------------------------------------+  
  3. | Variable_name            | Value                                                  |  
  4. +--------------------------+--------------------------------------------------------+  
  5. | character_set_client     | utf8                                                   |  
  6. | character_set_connection | utf8                                                   |  
  7. | character_set_database   | utf8                                                   |  
  8. | character_set_filesystem | binary                                                 |  
  9. | character_set_results    | utf8                                                   |  
  10. | character_set_server     | utf8                                                   |  
  11. | character_set_system     | utf8                                                   |  
  12. | character_sets_dir       | /usr/local/mysql-5.6.23-osx10.8-x86_64/share/charsets/ |  
  13. +--------------------------+--------------------------------------------------------+  
  14. 8 rows in set (0.00 sec)  


出现问题详解:

一开始我输入的命令为

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="color:#ff0000;">chmod a+w /etc/my.cnf</span>  
这条命令的意思是my.cnf对所有用户都有写的权限,这样就变成了666了。导致我改完以后也不报错,也不生效。

直到我关闭了数据库服务,再进入数据库的时候,数据库出现一个错误

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="color:#ff0000;">World-writable config file '/etc/my.cnf' is ignored</span>  

大概意思是权限全局可写,任何一个用户都可以写。mysql担心这种文件被其他用户恶意修改,所以忽略掉这个配置文件。

一下子我就懂了,打开数据库服务,修改成664后,再重启数据库,再查看编码已经成功修改。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
关系型数据库 MySQL 数据安全/隐私保护
Mac安装Mysql5.7
Mac安装Mysql5.7
1515 5
|
存储 人工智能 搜索推荐
详解MySQL字符集和Collation
MySQL支持了很多Charset与Collation,并且允许用户在连接、Server、库、表、列、字面量多个层次上进行精细化配置,这有时会让用户眼花缭乱。本文对相关概念、语法、系统变量、影响范围都进行了详细介绍,并且列举了有可能让字符串发生字符集转换的情况,以及来自不同字符集的字符串进行比较等操作时遵循的规则。对于最常用的基于Unicode的字符集,本文介绍了Unicode标准与MySQL中各个字符集的关系,尤其详细介绍了当前版本(8.0.34)默认字符集utf8mb4。
3248 82
|
关系型数据库 MySQL 数据库
【Mac os系统】安装MySQL数据库
本文详细介绍了在Mac OS系统上安装MySQL数据库的步骤,包括下载、安装、配置环境变量、启动服务、授权设置以及解决常见问题,并提供了一些常用的MySQL命令。
2260 0
【Mac os系统】安装MySQL数据库
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
3460 26
|
关系型数据库 MySQL 开发工具
mysql -- MAC下安装配置mysql
mysql -- MAC下安装配置mysql
486 0
|
SQL 关系型数据库 MySQL
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
本文探讨了在使用YMP 23.2.1.3迁移MySQL Server字符集为latin1的中文数据至YashanDB时出现乱码的问题。问题根源在于MySQL latin1字符集存放的是实际utf8编码的数据,而YMP尚未支持此类场景。文章提供了两种解决方法:一是通过DBeaver直接迁移表数据;二是将MySQL表数据转换为Insert语句后手动插入YashanDB。同时指出,这两种方法适合单张表迁移,多表迁移可能存在兼容性问题,建议对问题表单独处理。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
|
数据采集 中间件 关系型数据库
Mac系统通过brew安装mysql5.7后,启动报错的解决办法
Mac系统通过brew安装mysql5.7后,启动报错的解决办法
1326 2
|
存储 人工智能 关系型数据库
MySQL 8.0 字符集与比较规则介绍
我们都知道 MySQL 8.0 与 MySQL 5.7 的区别之一就是默认字符集从 latin1 改成了 utf8mb4 ,除此之外,MySQL 8.0 下的字符集和比较规则还有没有其他变化呢?本篇文章我们一起来学习下。
1334 1
|
存储 自然语言处理 关系型数据库
|
存储 关系型数据库 MySQL
MySQL各字符集、排序规则的由来、用法,区别和联系
MySQL支持多种字符集和排序规则,这些在数据库设计和数据处理中起着重要作用。下面是它们的由来、用法、区别和联系: 1. **字符集(Character Set)**: - **由来**:字符集定义了数据库中可以存储的字符集合,以及这些字符在数据库中的存储方式。 - **用法**:在创建数据库或表时,可以指定所需的字符集。常见的字符集包括UTF-8、UTF-16、Latin1等。 - **区别和联系**:不同的字符集支持不同的字符范围和存储方式,选择合适的字符集可以确保数据的正确存储和处理。例如,UTF-8支持全球范围内的大多数字符,而Latin1只支持西欧语言字符集。
501 1

推荐镜像

更多