Configurar autenticación mysql en ejabberd – ejabberd mysql auth


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é…

1 thought on “Configurar autenticación mysql en ejabberd – ejabberd mysql auth

Leave a Reply to Jair Humberto Calimneo Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s