Name: check_mysql_perl Purpose: Authenticating against MySQL with Perl Author: Alejandro Grijalba (SuD) Type: Script Requirements: Perl Download: check_mysql.pl.txt 
# Mysql external auth script # Features: auth and isUser work, but setPass doesn't. # Restrictions: Username or passwords may not contain some special characters: $'"` nor line breaks # Security considerations: # - i am not sure whether password is shown in the "echo" sentence when listing processes, perhaps not if echo is a shell builtin # - character filtering may not be perfect, but the most important '$"` are filtered out by this script # - mysql user password should not be set on command-line, instead use --defaults-extra-file=... # The file must contain [client] in the first line and password=... next (check some man page for more details) # 2005-1-24 Modified by Alejandro Grijalba (SuD) http://www.latinsud.com # Based on check_pass_null.pl script

Addtional information
I recently tried to get it working with ejabbered 2.1.5 and have some comments that might help future users of this:
In the check_mysql.pl script :
my ($op,$user,$password) = split /:/,$buf;
should be changed to :
my ($op,$host, $user,$password) = split /:/,$buf;
else, password field may not have the correct value.
Its good to keep this script in /var/lib/ejabberd/ [ assuming standard install] - and the datbase password is supplied in a separate file ./datosSql in the format :
[client]
password="mypassword"
- make sure that complete path is specified to this file e.g /var/lib/ejabbered/datatoSql