Cuando inicio mi servidor MySQL, aparece este error:
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
He corrido mysql_upgrade
para reconstruirlo, y funciona para reconstruir. Antes de hacerlo, eliminé e instalé MySQL. Sin embargo, cuando intenté reiniciar, aparece el mismo error. Estoy seguro de que no es un problema de permisos, ya que el mysql
usuario crea todos los archivos y directorios .
¿Me podría aconsejar sobre cómo solucionar este error?
Respuestas:
Si tiene un directorio de datos mysql en una ubicación no estándar y su sistema tiene una apariencia, asegúrese de que
/etc/apparmor.d/usr.sbin.mysqld
su directorio de datos esté en la lista blanca. La configuración debería verse así:El demonio Apparmor debe reiniciarse después de realizar cualquier cambio en la configuración.
fuente
apparmor
vuelve para despertarnos de vez en cuando, solo para que no nos olvidemos de él .../etc/apparmor.d/abstractions/user-tmp
. Cuando pongoowner /mysql-tmp/** rwkl, /mysql-tmp/ r,
en/etc/apparmor.d/local/usr.sbin.mysqld
que comenzó a trabajar para mí en Ubuntu 14.04.¿Estás seguro de que no se trata de permisos? errno: 13 :
Lo primero que debe intentar es cambiar la propiedad del datadir de MySQL , por ejemplo, si ejecuta MySQL con el usuario mysql :
Otra cosa a verificar es si el propietario del proceso mysqld (probablemente mysql ) tiene los privilegios necesarios para el destino definido como tmpdir . Y si por alguna razón lo anterior no funciona, intente rastrear el proceso mysqld para ver dónde y por qué se le niega el permiso :
fuente
Estoy de acuerdo con Dimitre. Este problema surge principalmente debido a permisos insuficientes. Cambie la propiedad de la carpeta raíz MySql a mysql.
Sin embargo, es posible que desee cambiar el permiso de los scripts Mysql a su usuario personalizado.
Esto funcionó para mí.
fuente
En mi caso, necesitaba colocar el directorio de datos de MySQL, incluida la
ibdata1
carpeta, en otra partición porqueibdata1
estaba creciendo demasiado rápido y se produjo un problema de memoria. Para eso, tuve que cambiar mi archivo .cnf como a continuación.my.cnf fue:
my.cnf ahora:
Lo intenté,
pero aún tiene el mismo error anterior. Luego intenté cambiar el
/etc/apparmor.d/usr.sbin.mysqld
archivo. Funciono bien para mi.Deberíamos incluir nuestra nueva carpeta en la lista blanca
usr.sbin.mysqld
.En lugar de agregar las líneas anteriores,
Luego reinicie el servidor MySQL.
fuente
Si está ejecutando SELinux, lo siguiente también puede ayudar ...
fuente
restorecon -R /var/lib/mysql
ayudó a restaurar correctamente la configuración de SELinux para el directorio.Tuve este problema después de actualizar de 5.5 a 5.6.
Curiosamente, parecía que el
mysql
usuario había sido eliminado y recreado, lo que había causado que todos los archivos mysql esencialmente 'perdieran' sus permisos ...Descubrí esto yendo al directorio mysql (que en mi caso no era el directorio predeterminado, como lo he movido) y vi que el propietario era solo un número uuid y guid ... Entonces, simplemente ejecuté
chown mysql:mysql
todos los directorios y archivos, y listofuente
Este simple también
chown
funcionó para mí, no más procesos de bloqueo:Afortunadamente, jugar con apparmor se vuelve complicado y difícil de editar.
fuente