mysql-server 5.7.22 中文支持

于由astupidcoder发布

没事学学数据库,本地建了个虚拟机,用的是ubuntu。
直接sudo apt install mysql-server了。
之前在VPS上这样安装mysql-server都会中途出来一个root用户密码设置界面让你设置密码,但这次没有,显然流程不一样。结果装好后发现mysql各种报错,说没权限什么的,mysql -u root -p也不行,总之就是没有”root”@”localhost”这个权限,后来我一怒之下直接把ubuntu的登陆用户换成root了,再次mysql直接进,连密码都不用。
试了一会语句,插入表的时候发现不支持中文啊,这不是坑爹嘛。网上的一些教程已经不怎么适用mysql 5.7.22这个版本了,说一下我的解决方法,供参考。

  
show variables like "character%";
+--------------------------+----------------------------+
| Variable_name                  | Value                      |
+--------------------------+----------------------------+
| character_set_client         | utf8                       |
| character_set_connection | utf8                       |
| character_set_database    | latin1                    |
| character_set_filesystem  | binary                    |
| character_set_results       | utf8                       |
| character_set_server        | utf8                       |
| character_set_system       | utf8                       |
| character_sets_dir            | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

果然是字符集设置有问题。
网上有不少说修改my.ini的,这明显是windows的文件,linux的命名风格也不是这样啊,继续搜索,得到以下命令:
mysql --help | grep my.cnf
可以看到你的配置文件在哪里,我得到的结果是/etc/mysql/my.cnf
打开一看,就两行

  
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

看来实际配置文件在/etc/mysql/conf.d/和/etc/mysql/mysql.conf.d/文件夹下,挨个打开看看,发现应该是/etc/mysql/mysql.conf.d/mysqld.cnf这个文件。
修改之:
在[mysqld]下面加上

  
character-set-server=utf8
collation-server=utf8_general_ci

即可,其他设置比如说:default-character-set=utf8,或者新添加一个域比如说[mysql]或者[client],在下面做任何设置的,在5.7.22版本里不是会引起错误导致重启不了mysql,要么就是导致打开mysql后无法输入中文,对,就是直接无法输入,看来都是老版本的设置方式了。
之后重启mysql,service mysql restart,之后就可以用中文了。
但这里还有一个坑,值得用最大号字体提示一下:

在修改之前建的数据库,依然没办法用中文,所以你必须把之前建立的数据库都drop掉,重新建一个,才能用中文。

对,就是这个坑,导致我反复修改了N次配置……


0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据。