Mac 使用 MySQL以及 解决中文乱码

使用

下载安装

官网下载页

Mac下安装mysql,首先下载dmg镜像文件,形如mysql-5.7.17-macos10.12-x86_64.dmg,装载后打开,里面是一个pkg文件,形如mysql-5.7.17-macos10.12-x86_64.pkg,然后安装就好了。会安装到/usr/local下,并在此文件夹下生成一个软链接。ls -li可以看到节点不同

开启

安装完之后,系统偏好设置就会多出一个MySQL,点进去就知道如何启动停止啦,还能设置开机启动。

配置文件

默认没有配置文件。若要做修改,需要到/usr/local/mysql/support-files目录下将mac上的mysql配置文件模板my-default.cnf拷贝到/etc下并重命名为my.cnf

中文乱码解决

以自己遇到的实例为例进行分析:

遇到的情况如下:

  • 后台写好的sql语句正常,但是写入数据库后乱码
  • 中文从数据库读取到页面正常
  • 直接用控制台插入中文字段正常

原因分析:

进入mysql命令行

mysql -u root -p

执行

show variables like 'character%';

结果如下:

+--------------------------+-----------------------------------------------------------+
| Variable_name            | Value                                                     |
+--------------------------+-----------------------------------------------------------+
| character_set_client     | utf8                                                      |
| character_set_connection | utf8                                                      |
| character_set_database   | utf8                                                      |
| character_set_filesystem | binary                                                    |
| character_set_results    | utf8                                                      |
| character_set_server     | latin1                                                    |
| character_set_system     | utf8                                                      |
| character_sets_dir       | /usr/local/mysql-5.7.17-macos10.12-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+

拓展

character_set_client:客户端字符集
character_set_connection:链接字符集
character_set_database:数据库字符集
character_set_filesystem:文件系统
character_set_results:结果字符集
character_set_server:服务器字符集
character_set_system:mysql系统字符集

解决方案

临时设置,重启失效:

set character_set_server=utf8;

永久设置

在mac上默认是没有配置文件的,需要到/usr/local/mysql/support-files目录下将mac上的mysql配置文件模板my-default.cnf拷贝到/etc下,并将文件名改成my.cnf

按下面内容修改my.cnf文件

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

重启mysql,问题解决。

你可能感兴趣的:(Mac 使用 MySQL以及 解决中文乱码)