目前是使用 root 的身份执行的,但是 zabbix agent 是使用 zabbix 身份来执行这条命令的,我们尝试使用 zabbix 来执行一下,看看效果
代码语言:javascript复制[root@mysql-server scripts]# sudo -u zabbix -H /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
0
[root@mysql-server scripts]# sudo -u zabbix -H /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
rm: cannot remove `/tmp/localhost-mysql_cacti_stats.txt': Operation not permitted
0
[root@mysql-server scripts]#
前一条报错的原因是 zabbix 用户在查询 Slave_IO_Running|Slave_SQL_Running 时,没有访问数据库的权限
后一条报错的原因是对于之前使用root生成的 /tmp/localhost-mysql_cacti_stats.txt zabbix没有写权限
给zabbix赋权
分别来进行处理,先处理写权限问题
代码语言:javascript复制[root@mysql-server scripts]# chown zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt
[root@mysql-server scripts]# sudo -u zabbix -H /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
0
[root@mysql-server scripts]#
再处理数据库访问权限问题
安装zabbix-agent时自动创建了zabbix用户,这样的用户没有登录权限,并且把 /var/lib/zabbix 当自己的家 (一个无家可归的孩子)
代码语言:javascript复制zabbix:x:496:493:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
修改 /etc/passwd,我们把它修改成这样
代码语言:javascript复制zabbix:x:496:493:Zabbix Monitoring System:/home/zabbix:/bin/bash
然后给 zabbix 创建一个家
代码语言:javascript复制[root@mysql-server ~]# mkdir /home/zabbix
[root@mysql-server ~]# cp /etc/skel/.* /home/zabbix/
cp: omitting directory `/etc/skel/.'
cp: omitting directory `/etc/skel/..'
cp: omitting directory `/etc/skel/.gnome2'
cp: omitting directory `/etc/skel/.mozilla'
[root@mysql-server ~]# chown -R zabbix.zabbix /home/zabbix/
[root@mysql-server ~]# su - zabbix
[zabbix@mysql-server ~]$ vim .my.cnf
[zabbix@mysql-server ~]$ cat .my.cnf
[client]
user = root
password = xxxxxx
[zabbix@mysql-server ~]$