原本要使用 Sqoop 把我 MySQL 的数据导入到 HBase 中,习惯了使用 windows 下的 MySQL 8.0 版本,但是用 Sqoop 从windows 传到 linux 下有点复杂,就索性用我自己之前没用过的 linux 下的 MySQL 5.7,结果果然一堆问题:中文数据插入失败,修改配置文件导致 mysql 启动失败...
我的配置文件在 /etc/my.cnf (我的安装路径不是那,它应该是自动把配置文件放到那里的)。
- #/etc/my.cnf
-
- [client]
- default-character-set=utf8
-
- [mysqld]
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- user=mysql
- # Disabling symbolic-links is recommended to prevent assorted security risks
- symbolic-links=0
- #default-character-set=utf8
- character-set-server=utf8
- init_connect='SET NAMES utf8'
-
- [mysql]
- no-auto-rehash
- default-character-set=utf8
-
- [mysqld_safe]
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
可以直接复制,基本上没啥问题,不放心的可以核对一下 datadir、socket、log-file 和 log-error 的路径和原 my.cnf 中的路径是否一致。
不要随便添加内容,否则一不小心配置失败就进不去 MySQL 了。
systemctl restart mysqld.service
如果你上面的配置文件中有想当然或者自由发挥的内容,那么很容易在这里报错:Job for mysqld.service failed because the control process exited with error code. See systemctl status mysqld.service and journalctl -xe for details.
show variables like 'character%';
修改成功的话应该是这样的:

即使你完成了上一步操作,这时你向表中插入中文数据依然可能会失败,因为你的数据库编码仍然是 latin1 (默认的)。
所以一定要删除原数据库,重新创建一遍!!!