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:
- AuthBasicAuthoritative Off
- Auth_MySQL_Authoritative On
Aquí especificamos que no queremos la autenticación clásica (Basic) pero sí la de MySQL.
- 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
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/