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]