Por marcos, hace 6 meses y 11 días

Popurrí de MySQL y Apache2 en Debian Etch

Primero... conectar a MySQL simple y llanamente
Estaba yo (re)configurando las definiciones de VirtualHosts para los proyectos alojados en trinity y que gestiono con tkmanager y resulta que intentaba acceder a la consola de la base de datos, con el típico mysql -u root -p. Pues no quería él. El error:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Resulta que en Debian Etch (realmente no sé a partir de qué versión), el fichero my.cnf no está en /etc sino en /etc/mysql. Cuando se pone en marcha el servidor, lee correctamente ese fichero, pero el cliente de mysql no, así que no encuentra el socket de mysql en /tmp (realmente no está ahí, sino en /var/run/mysqld/mysqld.sock) que es el comportamiento por defecto. La solución, fácil, benditos sean los enlaces simbólicos:

# cd /tmp && ln -s /var/run/mysqld/mysqld.sock

Y luego... hacer que la autentificación HTTP vaya contra MySQL
Lo primero es la instalación del módulo libapache2-mod-auth-mysql. A partir de aquí, configurar la autenticación que queramos realizar contra el MySQL.

Un ejemplo dentro de uno de mis virtualhosts:

        Auth_MySQL_Info localhost dbname secret

        
                AuthType Basic
                AuthName «Repositori per la SopaDePedres»

                AuthBasicAuthoritative Off
                Auth_MySQL_Authoritative On
                Auth_MySQL_Socket «/var/run/mysqld/mysqld.sock»
                Auth_MySQL on
                Auth_MySQL_DB tkmanager
                Auth_MySQL_Password_Table Users
                Auth_MySQL_Password_Field user_passwd
                Auth_MySQL_Username_Field user_name
                Auth_MySQL_Group_Table User_Project
                Auth_MySQL_Group_Field project_name
                Auth_MySQL_Group_Clause » AND project_name='sopadepedres' »
                Auth_MySQL_Encryption_Types Plaintext
                Auth_MySQL_Password_Clause » AND Users.active=1 »
                Require group sopadepedres
        

Líneas a destacar:

  1. AuthBasicAuthoritative Off
  2. Auth_MySQL_Authoritative On

Aquí especificamos que no queremos la autenticación clásica (Basic) pero sí la de MySQL.

  1. Auth_MySQL_Socket "/var/run/mysqld/mysqld.sock"

Esta otra es un workaround para lo que comentábamos al principio del post del cliente de MySQL.

El resto de configuración, nada especial que no podamos ver en un $ zcat /usr/share/doc/DIRECTIVES.gz.

Hacemos un reload de apache y ya podemos disfrutar del login con autenticación en base de datos :)

1 comentario

Gravatar #1. marcos
hace 6 meses y 2 días

Y para que las aplicaciones web PHP puedan conectarse a MySQL, hay que editar php.ini y decirle el default socket (/var/run/mysqls/mysqld.sock).

Toda esta movida viene después de instalar Zimbra, tendré que investigar por qué, si éste se instala en /opt y en puertos diferentes...

Escribir un comentario

Si quieres añadir tu comentario a esta entrada, simplemente rellena el siguiente formulario:





* Campos requeridos

Puedes usar estas etiquetas XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>.

No hay trackbacks

Para notificar de una mención en tu blog a esta entrada, habilita la notificación automática (Opciones > Discusión en WordPress) o especifica esta url de trackback: http://​blog.tenak.net/​go/​152/​trackback/