MySQL no lee enlaces simbólicos para archivos de opciones my.cnf

MySQL no lee enlaces simbólicos para archivos de opciones my.cnf

Estoy ejecutando MySQL 5.5 en Ubuntu.

Hay un archivo my.cnf en /etc/mysql/ donde esperaría que estuviera. - ¡Excelente!

Para instalaciones Debian de mysql, se recomienda no editar el archivo my.cnf. Hay una directiva IncludeDir en el archivo /etc/mysql/my.cnf para buscar en la carpeta /etc/mysql/conf.d/ más archivos de opciones.

Cuando coloco este archivo aquí:

/etc/mysql/conf.d/my-local.cnf

MySQL lee el archivo y anula cualquier cosa en /etc/mysql/my.cnf.

¡Excelente! :-)

Aquí está el problema:

Mantengo mi copia local del archivo /etc/mysql/conf.d/my-local.cnf en el control de código fuente y quiero actualizarlo periódicamente para todo el equipo. Entonces, mi solución es vincularlo simbólicamente:

cd /etc/mysql/conf.d/
ln -s /path/to/my/my-local.cnf my-local.cnf

MySQL no lee este enlace simbólico.

He verificado lo siguiente:

  • Tanto el archivo físico como el enlace simbólico tienen la extensión de archivo .cnf según el manual de MySQL.
  • El usuario de MySQL tiene acceso a este archivo.
  • Cada usuario tiene acceso a este archivo.
  • El usuario de MySQL tiene acceso al enlace simbólico.
  • Cada usuario tiene acceso al enlace simbólico.

Para resumir, MySQL leerá y analizará cuando haya un archivo físico en la carpeta /etc/mysql/conf.d/. MySQL no leerá un enlace simbólico en esta carpeta.

¿Alguien tiene alguna idea? ¿Podría ser esto un problema de Debian/ubuntu?

Se describió un problema similar, pero no resuelto y ligeramente diferente.aquí.

Respuesta1

Apparmor no sabe nada sobre la nueva ubicación delmy.cnf

El servidor MySQL sigue el enlace simbólico e intenta abrir el destino. Pero Apparmor lo niega.

Para solucionar el problema, debe agregar la ruta al my.cnfdirectorio/etc/apparmor.d/usr.sbin.mysqld

Respuesta2

Puede deberse a una aplicación que está habilitada para mysqld de forma predeterminada desde ubuntu 9.0.4. Por favor mirahttp://en.wikipedia.org/wiki/AppArmor.

  • Puede modificar las adiciones específicas del sitio en /etc/apparmor.d/local/. Sufrí el mismo problema y edité /etc/apparmor.d/local/usr.sbin.mysqld para que funcione. Tenga en cuenta la última coma en el archivo de política.

    # Site-specific additions and overrides for usr.sbin.mysqld.
    # For more details, please see /etc/apparmor.d/local/README.
    
    # vim:syntax=apparmor
    
    /etc/mysql/conf.d/* rl,
    @{HOMEDIRS}/** rwk,
    
  • Después de editar /etc/apparmor.d/local/usr.sbin.mysqld, reinicie el servicio apparmor mediante service apparmor restart. No debería haber ningún error ni advertencia sobre /etc/apparmor.d/local/usr.sbin.mysqld.
  • En mi caso, quería usar datadir y my.cnf específico del sitio ubicado en el directorio de inicio de los usuarios.

Respuesta3

Se me ocurren algunas posibilidades:

  • Cree el enlace simbólico en la otra dirección, es decir

    /home/developer/my-local.cnf -> /etc/mysql/conf.d/my-local.cnf
    
  • Utilice un enlace físico en su lugar.

  • Poner /etcbajo control de versiones utilizando una herramienta como etckeeper.

información relacionada