Si tienen un servidor jabber funcionando, es muy probable que tarde o temprano tengan que cambiar el modo de autenticación por mysql.
Para esto debemos tener instalado el Erlang Sql Native Driver, que lo podemos descargar desde aquí Erlang Mysql Driver.
En el Mysql creamos el usuario ejabberd :
$ mysql -h localhost -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.16-max
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> GRANT ALL ON ejabberd.* TO ‘ejabberd’@’localhost’ IDENTIFIED BY ‘password’;
Query OK, 0 rows affected (0.00 sec)
Creamos la base de datos ejabberd :
$ mysql -h localhost -u ejabberd
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.1.16-max
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> CREATE DATABASE ejabberd;
Query OK, 1 row affected (0.00 sec)
Descargamos el schema (puede descargarse desde otros servidores):
$ wget https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/src/odbc/mysql.sql
Importamos el schema en la base ejabberd:
$ mysql -D ejabberd -h localhost -p -u ejabberd < mysql.sql
Chequeamos la estructura de tablas en la base ejabberd:
$ echo “show tables;” | mysql -D ejabberd -h localhost -p -u ejabberd
Tables_in_ejabberd
last
privacy_default_list
privacy_list
privacy_list_data
private_storage
pubsub_item
pubsub_node
pubsub_node_option
pubsub_node_owner
pubsub_state
pubsub_subscription_opt
rostergroups
rosterusers
roster_version
spool
users
vcard
vcard_search
Ahora en el /etc/ejabberd/ejabberd.cfg modificamos la siguiente configuración (si instalaron el ejabberd desde los fuentes, el cfg puede estar en /opt/ejabberd/etc/):
Comentamos la siguiente línea:
{auth_method, internal}.
Agregamos las siguientes líneas:
{auth_method, odbc}.
{odbc_server, {mysql, “localhost”, “ejabberd”, “ejabberd”, “password”}}.
La configuración del mysql tiene el siguiente formato:
{mysql, Server, DB, Username, Password}
Adicionalmente cambiamos la siguiente configuración:
mod_last a mod_last_odbc
mod_offline a mod_offline_odbc (almacena mensajes offline en el mysql)
mod_roster a mod_roster_odbc (almacena lista de contactos en el mysql)
mod_private a mod_private_odbc
mod_privacy a mod_privacy_odbc
mod_pubsub a mod_pubsub_odbc
mod_vcard a mod_vcard_odbc (almacena descripcion de usuarios en mysql)
Restarteamos el ejabberd por las dudas:
# service ejabberd restart
Con esto cambios tendremos al ejabberd autenticando contra una base de datos mysql.
Como el metodo de conexión es por odbc, es posible aplicarlo a otros motores de base de datos como por ejemplo SQL Server.
Si alguien lo probó con SQL Server puede decirme como les fué…
Gracias, por eso, estoy desarrollando una cliente y necesitaba esa conexion con mysql, con toda la vcard.