概要:
配置了utf8 ,但是登录后查询仍然是latin1
配置文件:
cat mysql/conf/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
init-connect='SET NAMES utf8'
collation-server=utf8_general_ci
character-set-server=utf8
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
[mysql.server]
default-character-set = utf8
[mysqld_safe]
default-character-set = utf8mb4
查询结果:
原因:文件夹的权限
运行mysqld的是msyql用户 ,配置文件拥有者是root,对mysql用户可读可执行。但是配置文件的父目录的权限,对mysql用户无权限。chmod 751 /etc/mysql 即可。
为什么查询结果中,client那些字符集生效呢? 因为我是在本机上用mysql -u-p 命令登录的 ,这条shell命令的执行者是root ,而不是上文的mysql用户。
结语:
为什么用mysql用户启动 mysqld 时,配置文件有权限还不够?还需要上级目录有执行权限呢 ?希望读者留言指点一下 !