mysql 5.7.22设置中文编码-解决乱码问题 Linux

时间:2022-09-22 19:01:09

异常情况:

由于工作需要以及个人技术方面的兴趣,开始接触了之前没有接触的Linux部署应用程序一块;最近用linux安装mysql的时候,安装过程正常;但是利用mybaits写入mysql表数据的时候,发生乱码了。为此开始排查和解决乱码问题:

mysql 5.7.22设置中文编码-解决乱码问题 Linux

mysql 5.7.22设置中文编码-解决乱码问题 Linux

成功解决问题之后:

mysql 5.7.22设置中文编码-解决乱码问题 Linux
mysql 5.7.22设置中文编码-解决乱码问题 Linux

mysql 5.7.22设置中文编码-解决乱码问题 Linux

解决方法:

  • 配置默认配置文件

    在mysql 5.7.18版本及以后版本,没有默认配置文件;需要自己创建配置文件并保存在mysql 默认读取的路径下面;

查看mysql 配置文件读取命令:
~
/usr/local/mysql/bin/mysqld --verbose --help | grep -A 1 'Default options'
~

配置文件基本模板:

~~~

[*]这个标记不能去掉,否则mysql无法识别配置文件里面的参数

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

一般配置选项

basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306

需要自己在linux创建指定文件夹路径,并且赋予文件目录高权限,否则mysql会因为无法读取.sock文件而启动报错,并产生相应的报错提示

socket = /var/run/mysqld/mysqld.sock
character-set-server=utf8

[mysql]
no-auto-rehash
default-character-set=utf8
safe-updates
~~~

没有设置路径以及放开权限导致启动mysql报错提示:

~
2018-05-28T09:56:25.201315Z 0 [ERROR] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.
2018-05-28T09:56:25.201318Z 0 [ERROR] Unable to setup unix socket lock file.
2018-05-28T09:56:25.201321Z 0 [ERROR] Aborting
~

mysql 5.7.22设置中文编码-解决乱码问题 Linux

linux创建路径就不写了,用命令行或者是xftp工具创建都可以
socket = /var/run/mysqld/mysqld.sock

设置权限 /run/mysqld/ 就是/var/run/mysqld/mysqld.sock,一个快捷链接
~
chmod 777 /run/mysqld
~

启动mysql

~
bin/mysqld_safe --user=mysql &
~

停止mysql

~
mysqladmin -uroot -p shutdown
~

mysql配置文件中解决中文乱码的两行关键代码:
~~~
character-set-server=utf8

default-character-set=utf8
~~~

记住,在mysql配置文件配置好中文乱码之后,一定要重启mysql服务,命令上面已经给出。

配置文件存放位置:/etc/my.cnf 当然,其它路径也可以。

~
Last login: Mon May 28 16:08:35 2018 from 183.15.179.142
root@iZwz9hx2ppf9lebmxfezz2Z:~# /usr/local/mysql/bin/mysqld --verbose --help | grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
root@iZwz9hx2ppf9lebmxfezz2Z:~# ^C
~

转载请注明出处 https://www.jianshu.com/p/1deac307a923

参考文献: