On the client, add a zabbix database user (use a unique password)
GRANT USAGE ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'super-secret-password';
Add the following to the end of /etc/zabbix/zabbix_agentd.conf
# MySQL Keys UserParameter=mysql.status[*],(test -f /usr/bin/mysqladmin && mysqladmin -u$1 -p$2 extended-status 2>/dev/null | awk '/ $3 /{print $$4}') UserParameter=mysql.ping[*],(test -f /usr/bin/mysqladmin && mysqladmin -u$1 -p$2 ping | grep alive | wc -l) UserParameter=mysql.version,(test -f /usr/bin/mysqladmin && mysqladmin -V)
If this is also a MySQL slave, add the follwing to the end of /etc/zabbix/zabbix_agentd.conf
# MySQL Slave Keys UserParameter=mysql.slave[*],mysql -u$1 -p$2 -e "show slave status\G" | awk '/$3:/ {print $NF}' | sed s/Yes/1/ | sed s/No/0/
Restart the Zabbix agent
/etc/init.d/zabbix-agent restart
The key parameters should be mysql-username, mysql-password, and for mysql.status the status Item you want to query. So, for example:
mysql.status[zabbix,super-secret-password,Slow_queries]
I like to use macros for this to allow for a different username/password combination on each host, so it would be something like
mysql.status[{$MYSQL_USER},{$MYSQL_PASSWORD},Slow_queries]