odbc + asterisk + mariadb

378 views
Skip to first unread message

Jon Bonilla (Manwe)

unread,
Mar 27, 2019, 7:20:19 AM3/27/19
to asterisk-es
Hola a todos

Estoy haciendo un upgrade a asterisk 13.25, Mariadb 10.3 y debian 10 de una
máquina de pruebas y el asterisk me ha empezado a soltar errores de auth de
mysql:


res_config_odbc.c:124 custom_prepare: SQL Prepare failed! [SELECT * FROM
Ast_sipregs WHERE ipaddr = ? ORDER BY ipaddr]

WARNING[27220][C-000004c0]: res_odbc.c:451 ast_odbc_print_errors: SQL Prepare
returned an error: 28000: [ma-3.0.8][10.3.13-MariaDB-1]Access denied for user
'pekeuser'@'localhost' (using password: YES)


Conectarme a mysql puedo. isql también me da como conectado si lo ejecuto en
consola. (Pongo la pass en claro, la autogenero en cada upgrade)

El password creo que es correcto en odbc.ini y en res_odbc.conf

isql Mysql-Asterisk pekeuser KngJJ3gvuEgUYdNgyPAT
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+


#######################

mysql -upekeuser -pKngJJ3gvuEgUYdNgyPAT peke_pbx
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 80
Server version: 10.3.13-MariaDB-1 Debian buildd-unstable

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [peke_pbx]>

#######################

cat /etc/odbc.ini
[Mysql-Asterisk]
Description = MySQL ODBC Driver used for Asterisk configuration
Driver = MySQL
socket = /var/run/mysqld/mysqld.sock
SERVER=localhost
PORT=3306
USER=pekeuser
PASSWORD=KngJJ3gvuEgUYdNgyPAT
DATABASE=peke_pbx


##########################

cat /etc/asterisk/res_odbc.conf
[asterisk_odbc]
enabled => yes
dsn => Mysql-Asterisk
pre-connect => yes
User => pekeuser
Password => KngJJ3gvuEgUYdNgyPAT
sanitysql => select 1
idlecheck => 3600
connect_timeout => 20
;max_connections => 20

####################


¿Ideas?


--
https://pekepbx.com
https://www.issabel.com/multitenant

Elio Rojano

unread,
Mar 27, 2019, 7:29:54 AM3/27/19
to aster...@googlegroups.com
Por confirmar lo básico:

Imagino que ya habrás comprobado temas de "espacios" delante, detrás, etc... ¿verdad? (prueba a quitar todo espacio sobrante)
Mira en 'res_odbc.conf' que el campo 'User' igual no es igual al campo 'user'


--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar una publicación en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para obtener más opciones, visita https://groups.google.com/d/optout.


--

Jon Bonilla (Manwe)

unread,
Mar 27, 2019, 11:50:59 AM3/27/19
to aster...@googlegroups.com
El Wed, 27 Mar 2019 12:29:39 +0100
Elio Rojano <hel...@gmail.com> escribió:

> Por confirmar lo básico:
>
> Imagino que ya habrás comprobado temas de "espacios" delante, detrás,
> etc... ¿verdad? (prueba a quitar todo espacio sobrante)
> Mira en 'res_odbc.conf' que el campo 'User' igual no es igual al campo
> 'user'
>
>

No veo espacios

En la v.11 tenía este res_odbc

[asterisk_odbc]
enabled => yes
dsn => Mysql-Asterisk
pre-connect => yes
User=pekeuser
Password=otropassword
sanitysql => select 1
idlecheck => 3600
connect_timeout => 20
;max_connections => 20


Mirando el sample he cambiado a

[asterisk_odbc]
enabled => yes
dsn => Mysql-Asterisk
pre-connect => yes
User => pekeuser
Password =>KngJJ3gvuEgUYdNgyPAT
sanitysql => select 1
idlecheck => 3600
connect_timeout => 20
;max_connections => 20

De '=' a '=>'

Lo otro es que he cambiado el password tanto el los ficheros como en mysql pero
a mano me va correcto.

Elio Rojano

unread,
Mar 28, 2019, 4:21:15 AM3/28/19
to aster...@googlegroups.com
Y en res_odbc? se supone que es ahí donde hace la autentificación Asterisk.

[asterisk]
enabled => yes
dsn => your-configured-dsn-name
username => your-database-username
password => insecurepassword
pre-connect => yes

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar una publicación en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Jon Bonilla (Manwe)

unread,
Mar 28, 2019, 8:27:01 AM3/28/19
to aster...@googlegroups.com
El Thu, 28 Mar 2019 09:21:00 +0100
Elio Rojano <hel...@gmail.com> escribió:

> Y en res_odbc? se supone que es ahí donde hace la autentificación Asterisk.
>
>

He puesto el res_odbc en el primer correo. Tampoco hay espacios.

Voy a probar a poner mysql en vez de maría a ver si hay alguna diferencia.
Aunque no parece que sea el caso

Rodrigo Ramírez Norambuena

unread,
Mar 28, 2019, 9:31:45 AM3/28/19
to aster...@googlegroups.com
> ¿Ideas?

Has probado usando el Socket o solo la direccion del server (en tu
caso localhost)?

--
Rodrigo Ramírez Norambuena
http://www.rodrigoramirez.com/

Elio Rojano

unread,
Mar 28, 2019, 9:32:07 AM3/28/19
to aster...@googlegroups.com
Cierto, pero en el ejemplo que te he puesto: 


username => your-database-username
password => insecurepassword

Y en el tuyo:

User => pekeuser
Password => KngJJ3gvuEgUYdNgyPAT



--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar una publicación en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Jon Bonilla (Manwe)

unread,
Mar 28, 2019, 3:11:35 PM3/28/19
to aster...@googlegroups.com
El Thu, 28 Mar 2019 14:31:52 +0100
Elio Rojano <hel...@gmail.com> escribió:

> Cierto, pero en el ejemplo que te he puesto:
>
> username => your-database-username
> password => insecurepassword
>
>
>

Sigo con esto. Pongo en antecedentes:

Asterisk 11 en debian 8 (mysql 5.5)

Actualizo a Debian 10 y asterisk 13 y no falla nada.

Actualizo la password del usuario "pekeuser" y elimino el usuario "peke" porque
ya no se va a usar --> falla la conexión del usuario pekeuser en asterisk

Creo otra vez el usuario 'peke' con una password random que me invento y queno
aparece en ninguna parte del universo --> vuelve a no dar fallos.


odbc.ini, res_odbc y todo está configurado para que use el usuario 'pekeuser'.
Cuando borro el usuario 'peke' me salen los errores.
Hasta he parcheado el res_odbc para asegurarme de que usa los datos de
'pekeuser'


Probado con mariadb 10.3 y mysql 5.7

Me voy a volver loco. Ahora me toca ver las tripas de mysql para ver cómo una
cosa puede afectar a la otra.

Rick Gutierrez

unread,
Mar 28, 2019, 4:43:40 PM3/28/19
to aster...@googlegroups.com
Pues este es mi feedback, con asterisk 11 y mariadb junto con odbc me funciona bien,  cuando hice un upgrade hace mas de un año a asterisk 13 me paso eso mismo, no me jala el odbc le di la vuelta al mundo y no encontré nada, actualice el odbc, compile!, hice 1000 pruebas y nada....

Mi conclusión :en asterisk 13 no jala con odbc, ojo esas pruebas las hice hace mas de un año, habría que probar...con la 16 

nota: me falto recorrer el niagara en bicicleta para ver si funcionaba! :)


El El jue, mar. 28, 2019 a las 1:11 p. m., Jon Bonilla (Manwe) <ma...@sipdoc.net> escribió:
El Thu, 28 Mar 2019 14:31:52 +0100


Sigo con esto. Pongo en antecedentes:

Asterisk 11 en debian 8 (mysql 5.5)

Actualizo a Debian 10 y asterisk 13 y no falla nada.

Actualizo la password del usuario "pekeuser" y elimino el usuario "peke" porque
ya no se va a usar --> falla la conexión del usuario pekeuser en asterisk

Creo otra vez el usuario 'peke' con una password random que me invento y queno
aparece en ninguna parte del universo --> vuelve a no dar fallos.


odbc.ini, res_odbc y todo está configurado para que use el usuario 'pekeuser'.
Cuando borro el usuario 'peke' me salen los errores.
Hasta he parcheado el res_odbc para asegurarme de que usa los datos de
'pekeuser'


Probado con mariadb 10.3 y mysql 5.7

Me voy a volver loco. Ahora me toca ver las tripas de mysql para ver cómo una
cosa puede afectar a la otra.


--
https://pekepbx.com
https://www.issabel.com/multitenant

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar una publicación en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para obtener más opciones, visita https://groups.google.com/d/optout.
--

Jon Bonilla (Manwe)

unread,
Mar 28, 2019, 4:49:26 PM3/28/19
to aster...@googlegroups.com
El Thu, 28 Mar 2019 14:43:25 -0600
Rick Gutierrez <xserve...@gmail.com> escribió:

> Pues este es mi feedback, con asterisk 11 y mariadb junto con odbc me
> funciona bien, cuando hice un upgrade hace mas de un año a asterisk 13 me
> paso eso mismo, no me jala el odbc le di la vuelta al mundo y no encontré
> nada, actualice el odbc, compile!, hice 1000 pruebas y nada....
>
> Mi conclusión :en asterisk 13 no jala con odbc, ojo esas pruebas las hice
> hace mas de un año, habría que probar...con la 16
>
> nota: me falto recorrer el niagara en bicicleta para ver si funcionaba! :)
>

Siendo asterisk 13 la lts desde hace años y odbc el único driver que soporta
Digium me niego a creer que no funciona.

Esto tiene que ver algo internamente con el mysql, los usuarios y los
statements/procedures.

Rick Gutierrez

unread,
Mar 28, 2019, 7:08:51 PM3/28/19
to aster...@googlegroups.com
El El jue, mar. 28, 2019 a las 2:49 p. m., Jon Bonilla (Manwe) <ma...@sipdoc.net> escribió:
El Thu, 28 Mar 2019 14:43:25 -0600


Siendo asterisk 13 la lts desde hace años y odbc el único driver que soporta
Digium me niego a creer que no funciona.

Esto tiene que ver algo internamente con el mysql, los usuarios y los
statements/procedures


Mejor comenzar x asterisk/sangoma q x mariadb, aunque no esta demas preguntar en la lista de mysql.



--

odicha

unread,
Apr 10, 2019, 1:59:36 PM4/10/19
to aster...@googlegroups.com

El 28/03/2019 a las 20:49, Jon Bonilla (Manwe) escribió:
Siendo asterisk 13 la lts desde hace años y odbc el único driver que soporta Digium me niego a creer que no funciona. Esto tiene que ver algo internamente con el mysql, los usuarios y los statements/procedures.

Hola a todos.

Por mi experiencia personal, si tienes que usar odbc, con debian/ubuntu usa mysql y con RedHat CentOs, Fedora usa mariadb ODBC/Connector (yo estoy usando 3.0.8 con CentOS 7.6 y mariadb 10.1.3x

Lo primero que puedes hacer es poner el odbc en debug/trace y ver que hace internamente, Si no me acuerdo mal agregas

tracefile=/tmp/infierno.log
trace
=1

al odbc.ini en la sección del servidor asterisk y te deberá devolver algo así

ODBC][6969][1549817891.100123][SQLConnect.c][3700]
        Entry:
            Connection = 0x19f9050
            Server Name = [myserver][length = 26 (SQL_NTS)]
            User Name = [NULL]
            Authentication = [NULL]
        UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'

[ODBC][6969][1549817891.117190][SQLConnect.c][4273]
        Exit:[SQL_SUCCESS]
Mira https://support.zabbix.com/browse/ZBX-7665 y https://bugs.mysql.com/bug.php?id=73709
Si mal no recuerdo (y no ha cambiado mucho esa parte del código) hay un trap de excepciones en la llamada, así que aunque no se vea en los logs pueden ir por ahí los tiros

Ricardo Vargas

unread,
Apr 11, 2019, 11:00:45 AM4/11/19
to asterisk-es
Buen día

El mejor consejo que te puedo dar es que no uses esa mierda de ODBC. Yo utilizo PHP 7.x y la libreria phpagi-2.20 para hacer conexiones con DB sin problemas (eso si sabes algo de php), no es complicado y te evitas dolores de cabeza.

Jon Bonilla (Manwe)

unread,
Apr 11, 2019, 1:55:50 PM4/11/19
to Ricardo Vargas, aster...@googlegroups.com
El Thu, 11 Apr 2019 08:00:45 -0700 (PDT)
Ricardo Vargas <hym...@gmail.com> escribió:

> Buen día
>
> El mejor consejo que te puedo dar es que no uses esa mierda de ODBC. Yo
> utilizo PHP 7.x y la libreria phpagi-2.20 para hacer conexiones con DB sin
> problemas (eso si sabes algo de php), no es complicado y te evitas dolores
> de cabeza.
>
>

Hay mucho desarrollo hecho en odbc. Es un upgrade, no una reimplementación.

Pero bueno gracias. Al final dejaré el usuario que me falla al borrar y listo.
Implementaré el upgrade con mariadb de debian 10. Seguirá siendo un misterio.

Elio Rojano

unread,
Apr 13, 2019, 12:08:48 PM4/13/19
to aster...@googlegroups.com
Si no usas odbc, para guardar el CDR ¿usas el cdr_mysql? ¿ejecutas un AGI en el 'h'?...


--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
Reply all
Reply to author
Forward
0 new messages