设为首页 收藏本站
查看: 1238|回复: 0

[经验分享] mysql 字 符 集 问 题 之 zabbix

[复制链接]

尚未签到

发表于 2019-1-24 07:26:36 | 显示全部楼层 |阅读模式
  MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则。这两个参数集可以在数据库实例、单个数据库、表、列等四个级别指定;

  zabbix没有数据存储的功能,所以需要借助第三方数据库完成数据存储,比较流行的是使用mysql,而关于她的字符集就成了一个小问题,我们来是这去解决一下;

  一:zabbix监控中常碰到的字符集问题解决

  1. 图形中显示中文乱码
  2. 历史记录处出现乱码
  二:更改mysql字符集的操作

  1. 查看当前的默认字符集
  2. 安装之前设定字符集
  3. 安装后没有存储数据时更改
  4. 有了一定的数据存储后更改
  

  一:zabbix监控中常碰到的字符集问题

  1.图形中显示中文乱码



  yum 安装的zabbix 字体并不是在/usr/share/zabbix/fonts下,而在/usr/share/zabbix/fonts/dejavu下,具体配置可以通过查看配置文件:/usr/share/zabbix/include/defines.inc.php;虽然这个目录下有个 DejaVuSans.ttf  但是不管用,

  我们需要搞一个喜欢的中文字体放到这里来,比如从windows上的  C:\windows\fonts\目录下拷贝文件  simfang.ttf 到 /usr/share/zabbix/fonts/dejavu 目录下,然后修改名字

  mv   DejaVuSans.ttf   DejaVuSans.ttf.bak

  mv    simfang.ttf  DejaVuSans.ttf
  重启:/etc/init.d/zabbix-server restart

  2.历史记录处出现问号乱码
  
  这是因为zabbix数据库所使用的字符集不是中文的utf8,解决方法如下:
  备份zabbix数据库
  mysqldump  -uroot  -p 123456   zabbix  >  zabbix.sql
  修改备份文件
  sed  -i  's/latin1/utf8/g'  zabbix.sql
  删除zabbix数据库
  mysql>  drop database zabbix;
  退出mysql数据库,设置默认字符集
  vim /etc/my.cnf

  [mysqld]
  log-bin
  datadir=/var/lib/mysql
  socket=/var/lib/mysql/mysql.sock
  default-character-set = utf8                                  #添加该项
  

  启动mysql并恢复zabbix数据库
  mysql -uroot -p123456 zabbix < zabbix.sql
  

  

  二:更改mysql字符集的操作

  1. 查看当前的默认字符集

  mysql> show create database zabbix;


  mysql> show variables like 'character%';


  2. 安装之前设定,适用于源码包安装

  我们可以在在编译MySQL的时候可以通过 DEFAULT_CHARSET=utf8   

   DEFAULT_COLLATION=utf8_general_ci这两个参数;
  编译的时候指定--with-charset=utf8    --with-collation=utf8_general_ci)来指定默认的字符集为
  utf8,这也是最一劳永逸的办法
  3. 安装后没有数据时

  /etc/my.cnf
  修改mysql的my.ini或my.cnf文件中的字符集键值
  在[mysqld]下添加
  default-character-set=utf8                          (mysql 5.5 版本添加character-set-server=utf8)
  在[client]下添加
  default-character-set=utf8
  重启:service mysql restart
  查看:mysql> SHOW VARIABLES LIKE 'character%'
  

  但是这种更改对客户端的连接是没有作用的,客户端这时候一般需要指定utf8方式连接才能避免乱码。也就是传说中的setnames命令。

  服务器上执行:
  set  names  utf8                                               这就可以,只不过每次开机都得执行
  其实set names utf8命令对应的是服务器端以下几个命令
  SET character_set_client = utf8;
  SET character_set_results = utf8;
  SET character_set_connection = xutf8;
  因为这三个参数是不能写在配置文件my.cnf里的。只能通过set命令来动态修改。但是我们可以用init_connect,这个命令意思是每个用户连接上来的时候都会触发执行,可以在[mysqld]部分增加以下一行

  [mysqld]
  init_connect = 'SET NAMES utf8'
  关于这个设置,有的文档在这个基础上另加了几条命令,在那三个set上又增加了几条,你的实在还不行的话加上试试吧

  
  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-666798-1-1.html 上篇帖子: 3.4 下篇帖子: 解决zabbix3.0.8中文乱码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表