Mysql ne démarre pas - ibdata1 corrompu? - erreur du système d'exploitation numéro 13 - problème d'autorisations
De l'arrêt du serveur en cas de panne électrique.
Mysql ne va pas commencer maintenant.
Le disque n'est pas plein.
Syslog est ci-dessous
Oct 11 15:03:31 joe mysqld_safe[24757]: started
Oct 11 15:03:31 joe mysqld[24760]: 101011 15:03:31 InnoDB: Operating system error number 13 in a file operation.
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: The error means mysqld does not have the access rights to
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: the directory.
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: File name ./ibdata1
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: File operation call: 'create'.
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: Cannot continue operation.
- Vérifié les autorisations pour ibdata1 je suppose? Dans /var/lib/mysql sur debian et ses dérivés, je pense
- Oui, rien n'a changé. Les autorisations sont la propriété de mysql. Le fichier doit être corrompu. C'est la seule chose que je peux penser en ce moment.
InformationsquelleAutor eat_a_lemon | 2010-10-11
Vous devez vous connecter pour publier un commentaire.
Le fichier n'est pas corrompu. Vous pouvez trouver la source de ces erreurs avec "perror'. c'est à dire
InnoDB a détection de la corruption (page de sommes de contrôle) et serait heureux de vous dire si le problème était là.
Soit les autorisations de répertoire ont changé, ou votre mon.cnf fichier a été modifié, et c'est en essayant de recréer les fichiers de données à un autre endroit.
Si vous utilisez ubuntu ou apparmor vous devrait permettre ce changement de apparmor.
Modifier
/etc/apparmor.d/usr.sbin.mysqld
et changement/var/lib/mysql
avec la nouvelleDATADIR
.Il devrait fonctionner.
/var/log/kernl.log
pour voir le fichier d'accès apparmor est bloquant. Ce n'est pas toujours facile de comprendre, par exemple, si vous avez des liens symboliques de sortir de votre/var/lib/mysql
dossier. BTW, je pense que le comportement à l'égard des liens symboliques changé de ubuntu 14.04 à 16.04.Erreur:
Solution SeLinux de sécurité SeLinux:
Pour moi, la restauration du contexte de sécurité (selinux) a fait le tour
restorecon -R /var/lib/mysql/
/var/lib/mysql
à elle. Il ne serait pas travailler jusqu'à ce que j'ai essayé ce. Un peu de logique, je suppose?veuillez vérifier:
J'ai eu exactement le même problème sur mon CentOS boîte. Après le déplacement de données mysql répertoire autour de moi, je ne pouvais pas démarrer le service plus, même comme je l'avais copié les fichiers avec le même propriétaire et les permissions.
J'ai eu un problème avec la sécurité SELinux contexte. Si vous exécutez votre CentOS stock, il a de bonnes chance d'être activé et ne les laissons pas faire ce que vous voulez avec MySQL. Pour résoudre ce problème :
D'abord comparer l'ancien dir et nouveau répertoire à l'aide de
et
Si vous voir la différence qu'il est susceptible d'être votre problème.
Pour modifier ce :
Le commutateur-R est la récursivité. Si vous avez seulement besoin de modifier un fichier, vous pouvez l'omettre.
Si votre contexte est différente de la mienne(peut-être une autre distro), utilisez celui qui est indiqué par la sortie de la première (ce doit être le 3ème domaine de la SELinux trucs)
chcon -R --type=mysql_db_t /var/lib/mysql
, j'ai eu un tas dechcon: can't apply partial context to unlabeled file 'xxxxxx'
. Qu'est-ce que cela signifie?En bref, (en particulier sur RHEL/CentOS/Fedora) essayez
si il répond avec
Enforcing
vous avez SELinux et en cours d'exécution. Désactiver temporairement avecsetenforce 0
et voir si MariaDB commence maintenant! Plutôt communs, en particulier sur RHEL/CentOS/Fedora.Il n'y a plus à ce sujet plus bas, ainsi que dans ce fonctionnaire de l'article.
En général
Il y a plus de choses dans un environnement UNIX, qui pourrait empêcher l'accès aux fichiers, que de simplement les droits d'accès utilisateur.
En outre, il pourrait y avoir d'autres facteurs inattendus, comme la ...
datadir
être fixé à un endroit, où mysql n'a pas les permissions (voir/etc/my.cnf
)Juste pour mentionner une vue sur les choses du haut de ma tête (n'hésitez pas à modifier/ajouter à cette réponse btw).
Dans le cas, SELinux est "le problème"
Pour une solution permanente, vous pouvez essayer de restaurer le contexte de sécurité appropriées, ...
... ou tout simplement désactiver SELinux (mais réfléchissez un peu avant de le faire), en éditant le fichier de configuration (généralement dans
/etc/selinux/config
) et la mise enSELINUX=disabled
comme suggéré dans l'article suivant.Évidemment ceux-ci sont applicables à MySQL exactement de la même manière.
J'ai eu le même problème et de le résoudre par les étapes ci-dessous
De travail répertoire /var/lib/mysql
Plus tôt /var/lib/mysql a été possédé par certains utilisateurs inconnus
Changé à mysql
mysql]# chown -R mysql:mysql *
mysql]# service mariadb start
Redirecting to /bin/systemctl start mariadb.service
Fonctionne comme un charme
Lorsque cette surgi pour moi, j'ai trouvé la réponse dans le
/etc/mysql/my.cnf
fichier de configuration. Ledatadir
ligne n'ont pas de point à la/var/lib/mysql
répertoire (où les bases de données). Une fois j'ai mis ce chemin d'accès, le serveur redémarré sans problème.J'ai eu exactement le même problème sur mon CentOS boîte. Après le déplacement de données mysql répertoire autour de moi, je ne pouvais pas démarrer le service plus, même comme je l'avais copié les fichiers avec le même propriétaire et les permissions.
J'ai eu un problème avec la sécurité SELinux contexte. Si vous exécutez votre CentOS stock, il a de bonnes chance d'être activé et ne les laissons pas faire ce que vous voulez avec MySQL. Pour résoudre ce problème :
D'abord comparer l'ancien dir et nouveau répertoire à l'aide de
et
Si vous voir la différence qu'il est susceptible d'être votre problème.
Pour modifier ce :
Le commutateur-R est la récursivité. Si vous avez seulement besoin de modifier un fichier, vous pouvez l'omettre.
Si vous utilisez du SEL Linux
Intall semanage
yum whatprovides /usr/sbin/semanage
vous obtenezpolicycoreutils-python-2.5-22.el7.x86_64
Voir mysqld contexte de sécurité
Après l'installation
yum install policycoreutils-python
vous pouvez juste regarder ce contexte de sécurité différent mysqld a.Ici, vous voyez tout contexte pour mysqld une courte liste avec explication
Donc, si vous avez le mauvais contexte de sécurité de vos fichiers, vous obtenez un permission denied (erreur 13)
Solution
Mais cocher la case "normal" des autorisations, trop. J'ai eu ce problème avec
centos
. Vous devezsystemctl restart mysql
pour les modifications.Dans mon siuation est Selinux du problème. Et l'
chcon -R --type=mysql_db_t /new/mysql/dir
vient d'erreur:chcon: failed to change context of /new/mysql/dir to root:object_r:mysql_db_t: Invalid argument
.J'ai donc utiliser la commande:
chcon -R root:object_r:mysqld_db_t /new/mysql/dir
.Si vous avez ce problème sur un NAS Synology vous pouvez résoudre le problème en suivant les conseils de l'équipe de support Synology:
Plus d'infos: Le forum de Synology
J'ai eu le même problème.
Fait beaucoup de recherche et a trouvé cette solution.
Vous devez exécuter cette commande sur ibdata1
sudo shadowprotect -u root | root
Je ne sais pas ce que cela fait.. mais il a travaillé pour moi.
Bonne chance.