Lorsque je démarre mon serveur MySQL, j'obtiens cette erreur:
/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.
J'ai couru mysql_upgrade
pour le reconstruire, et cela fonctionne pour le reconstruire. Avant cela, j'ai supprimé et installé MySQL. Cependant, lorsque j'ai essayé de redémarrer, j'obtiens la même erreur. Je suis sûr que ce n'est pas un problème d'autorisation, car tous les fichiers et répertoires sont créés par l' mysql
utilisateur.
Pourriez-vous me conseiller sur la façon de corriger cette erreur?
Réponses:
Si vous avez un répertoire de données mysql à un emplacement non standard et que votre système a un apparmor, assurez-vous que
/etc/apparmor.d/usr.sbin.mysqld
votre répertoire de données est sur la liste blanche. La configuration devrait ressembler à:Le démon Apparmor doit être redémarré après avoir apporté des modifications à la configuration.
la source
apparmor
revient pour nous réveiller de temps en temps, juste pour ne pas l'oublier .../etc/apparmor.d/abstractions/user-tmp
. Quand je metsowner /mysql-tmp/** rwkl, /mysql-tmp/ r,
en/etc/apparmor.d/local/usr.sbin.mysqld
elle a commencé à travailler pour moi sur Ubuntu 14.04.Êtes-vous sûr qu'il ne s'agit pas d'autorisations? errno: 13 :
La première chose à essayer est de changer la propriété du datadir de MySQL , par exemple, si vous exécutez MySQL avec l'utilisateur mysql :
Une autre chose à vérifier est de savoir si le propriétaire du processus mysqld (très probablement mysql ) a les privilèges nécessaires pour la destination définie comme tmpdir . Et si, pour une raison quelconque, ce qui précède ne fonctionne pas, essayez de suivre le processus mysqld pour voir où et pourquoi sa permission est refusée :
la source
Je suis d'accord avec Dimitre. Ce problème survient principalement en raison d'autorisations insuffisantes. Changez la propriété du dossier racine MySql en mysql.
Vous voudrez peut-être changer l'autorisation des scripts Mysql pour votre utilisateur personnalisé.
Cela a fonctionné pour moi.
la source
Dans mon cas, je devais placer le répertoire de données MySQL, y compris le
ibdata1
dossier, dans un autre partitionnement, car maibdata1
croissance était trop rapide et un problème de mémoire s'est produit. Pour cela, j'ai dû changer mon fichier.cnf comme ci-dessous.mon.cnf était:
my.cnf maintenant:
J'ai essayé,
mais toujours la même erreur ci-dessus. Ensuite, j'ai essayé de changer le
/etc/apparmor.d/usr.sbin.mysqld
fichier. Ça a bien marché pour moi.Nous devrions ajouter notre nouveau dossier à la liste blanche
usr.sbin.mysqld
.Au lieu des lignes ci-dessus, ajoutez:
Redémarrez ensuite le serveur MySQL.
la source
Si vous utilisez SELinux, les éléments suivants peuvent également vous aider ...
la source
restorecon -R /var/lib/mysql
aidé à restaurer correctement les paramètres SELinux pour le répertoire.J'ai eu ce problème après avoir mis à niveau la version 5.5 vers la version 5.6.
Étrangement, il semblait que l'
mysql
utilisateur avait été supprimé et recréé, ce qui avait fait que tous les fichiers mysql avaient essentiellement `` perdu '' leurs autorisations ...J'ai découvert cela en allant dans le répertoire mysql (qui dans mon cas n'était pas le répertoire par défaut, car je l'ai déplacé) et j'ai vu que le propriétaire était juste un numéro uuid et guid ... Donc, je viens de courir
chown mysql:mysql
sur tous les dirs et fichiers, et le tour est jouéla source
Ce simple
chown
a également fonctionné pour moi, plus de processus de plantage:Heureusement, jouer avec apparmor devient compliqué et difficile à modifier.
la source