No se puede crear el archivo /var/lib/mysql/user.lower-test

11

La base de datos MySQL ha estado libre de problemas durante algunos meses. Hoy, cuando busqué paquetes actualizables utilizando el Administrador de paquetes Synaptic, surgieron los diversos componentes de MySQL (-común, -cliente, -servidor, etc.). Por lo tanto, decidí actualizar (olvidé anotar la versión instalada pero creo que era 5.6.21) a 5.6.25-1-ubuntu2.0. Luego, cuando fui a consultar la base de datos, recibí el mensaje:

Error occured: Can't connect to MySQL server on '127.0.0.1' (111)

Luego descubrí que el servidor no se estaba ejecutando. En el archivo de registro me gusta que el mensaje:

Can't create file /var/lib/mysql/user.lower-test

He pasado una hora más o menos buscando en línea y aunque el problema se ha informado anteriormente, no lo he visto en el contexto de un problema de 'actualización posterior' tan inseguro de mi próximo paso.

MichaelJohn
fuente

Respuestas:

6

Este problema parece permitir problemas o cambiar el directorio de datos de mysql a otra ubicación luego / var / lib / mysql.

Intenta correr con sudo

Parece que / var / lib / mysql es propiedad del usuario de mysql y el grupo también está configurado en mysql.

$ sudo chown -R mysql /var/lib/mysql
$ sudo chgrp -R mysql /var/lib/mysql
$ sudo chmod 755 /var/lib/mysql

¿Ha verificado que el directorio / var / lib / mysql realmente existe y corresponde a su directorio de datos? Si no es así, entonces probablemente deba especificar el parámetro datadir en la sección mysqld.

[mysqld]
datadir=/var/lib/mysql

Luego puede elegir entre configurar apparmor para permitir que MySQL lea \ ejecute \ modifique el nuevo directorio de datos y los subdirectorios o, bajo su propio riesgo, puede eliminar apparmor. Es posible que deba ser root para hacer lo siguiente:

/etc/init.d/apparmor stop
/etc/init.d/apparmor teardown
update-rc.d -f apparmor remove
apt-get purge apparmor
reboot
Hitesh Mundra
fuente
Pasé por todo esto pero fue en vano. Al tener copias de seguridad, decidí reinstalar y todo funciona salvo un problema que tuve. ¿Pero es el problema Linux o es MySQL ...
MichaelJohn
@MichaelJohn no puede decir nada. podría ser apparmor o corrupción paquete mysql
Hitesh Mundra
En Ubuntu Xenial: apparmorse instala y habilita automáticamente cuando lo instala mysql-server-5.6. Incluso si lo desactivaste previamente. No puede eliminar el apparmorpaquete porque es una dependencia de mysql-server-5.6. Puede resolver el error "No se puede crear el archivo /var/lib/mysql/user.lower-test" haciendoservice apparmor stop; service apparmor teardown; update-rc.d -f apparmor remove
Jeroen Vermeulen - MageHost
5

Me encontré con este problema al intentar ejecutar varias instancias de MySQL, pero en lugar de eliminar un parche, actualicé el archivo usr.sbin.mysqld:

vim /etc/apparmor.d/usr.sbin.mysqld

Por ejemplo, así es como se ve mi archivo, y una vez que agregué las carpetas que necesitan permisos de escritura, todo funcionó como debería.

/usr/sbin/mysqld {

  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,

  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/*.cnf r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/lib/mysql1/ r,
  /var/lib/mysql1/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /var/run/mysqld/mysqld1.pid rw,
  /var/run/mysqld/mysqld1.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,

  /sys/devices/system/cpu/ r,

}
Jubair
fuente
1
Esto funcionó para mí también. Tuve que reiniciar el servidor para que esto funcionara, simplemente detener y reiniciar AppArmour no funcionó.
MikeHoss
3

El problema me ocurrió cuando intenté mover / var / lib / mysql a otro disco y reemplazar el directorio original con un enlace simbólico.

Apparmor negará el acceso en esta configuración ver

por qué los desarrolladores de Apparmor consideran que esto no es un error. La solución es usar un montaje de unión. Ver

para una explicación

Entonces

mount --bind /newmysqldatadir /var/lib/mysql
service mysql start

me solucionó el problema.

Wolfgang Fahl
fuente
1

Tuve un problema similar. Reinstalé Ubuntu Server en mi máquina, hice una copia de seguridad completa de / etc / en un disco duro, después de reinstalar hice una copia de todos los archivos importantes de / drive / etc / a mis sistemas / etc.

Mientras hacía esto, creé un bak para el archivo usr.sbin.mysqld llamado usr.sbin.mysqld.bak y lo guardé en el mismo directorio /etc/apparmor.d/.

Al seguir buscando, encontré esta publicación de blog: https://blogs.oracle.com/jsmyth/apparmor-and-mysql

Instalé apparmor-utils e intenté aa-complain en / usr / sbin / mysqld y dijo que tengo 2 configuraciones de apparmor definidas (mis dos archivos).

Sé que podría no ser el problema que está enfrentando, pero solo por claridad, no sea tan tonto como yo, haciendo un archivo de respaldo en el mismo directorio del directorio apparmor sbin.

Radu Galan
fuente
0

También verifique si su partición no está llena, que fue mi caso.

Por una razón desconocida, mover los datos a otra partición tampoco funcionó.

Entonces, para una solución rápida, en lugar de jugar con llvm o gparted, reduje mi /swapfiletamaño.

Daishi
fuente