MySQL 5.1.54 Ubuntu 11.04
Je vais essayer de changer le répertoire du journal bin dans my.conf comme:
[mysqld]
log_bin=/home/developer/logs/mysql/mysql-bin.log
Après cela, le serveur MySQL ne peut pas démarrer avec une erreur:
/usr/sbin/mysqld: File '/home/developer/logs/mysql/mysql-bin.index'
not found (Errcode: 13)
111005 12:47:58 [ERROR] Aborting
L'autorisation pour le répertoire/home/developer/logs/mysql/is 0777
Que se passe-t-il?
Comme d'habitude, la solution était simple mais pas évidente: il fallait modifier les paramètres de l'apparmeur que je viens d'ajouter à / etc/apparmor.d/usr.sbin.mysqld une nouvelle chaîne avec le chemin vers le répertoire cible: - / home/developer/logs/* rw
Ça marche!
/ usr/sbin/mysqld: fichier '/usr/binlogs/mysql-bin.index' introuvable (Errcode: 13)
Cela a fonctionné pour moi avec:
chown -R mysql: mysql/usr/binlogs /
Tout comme un FYI pour quiconque rencontre un problème similaire, la solution est fondamentalement la même, mais la cause du problème n'est pas évidente.
Après la mise à niveau de Debian Wheezy, mysql n'a pas pu démarrer.
D'une manière ou d'une autre, je ne sais pas comment, les autorisations sur certains fichiers dans /var/lib/mysql
n'appartenait pas à l'utilisateur mysql, empêchant ainsi le serveur de démarrer.
UNE chown -R mysql.mysql /var/lib/mysql
l'a corrigé.
Je n'ai rien fait pour gâcher mysql, c'était un standard:
apt-get update
apt-get upgrade
Quelque chose est devenu étrange pendant la mise à niveau de Debian et une intervention manuelle était nécessaire.
Option 1:
service mysqld stop
Copiez les fichiers journaux, y compris le fichier .index, vers un nouvel emplacement.
cp mysql-bin.log* /path/to/binlogs
cp mysql-bin.index /path/to/binlogs
Faites des changements dans le /etc/my.cnf
fichier.
[mysqld]
log-bin=/path/to/newdirecory/mysql-bin
log-bin-index=/path/to/newdirectory/mysql-bin.index
service mysqld start
Option 2:
Utilisez cette utilité pour déplacer les journaux binaires:
mysqlbinlogmove --binlog-dir=/server/data /new/binlog_dir
Selinux pourrait appliquer la règle selon laquelle les fichiers de base de données MySQL doivent vivre dans/var/lib/mysql et nulle part ailleurs. Essayez de désactiver selinux (selinux = 0 sur la ligne de commande de démarrage du noyau) si vous avez déplacé mysql dans un autre répertoire.
Lors de la configuration de la réplication dans le fichier "my.cnf", il faut mentionner
server-id = 1 log_bin =/var/log/mysql/mysql-bin.log
vous pouvez créer votre propre répertoire et donner la permission. créer le répertoire "mysql" dans/var/log /
chmod 777 mysql
cela s'applique à MySQL version 5.7
mysqld: fichier '/data/log/mysql/mysql-bin.index' introuvable (Errcode: 2 - Aucun fichier ou répertoire de ce type)
J'étais vraiment coincé au milieu de ma configuration MySQL Master - Slave. Enfin, ce qui précède était un problème d'autorisation, l'ajout de la commande ci-dessous a résolu mon problème.
chown -R mysql: mysql/data/log/mysql /
Vous devez accorder des autorisations utilisateur au répertoire comme suit:
chown -R mysql:mysql /home/developer/logs/mysql/
Vous pouvez également commenter la ligne dans my.cnf
fichier qui définit l'emplacement du journal, donc mysql considérera son chemin par défaut et démarrera correctement.
log-bin = /var/log/mysql/mysql-bin.log
-> #log-bin = /var/log/mysql/mysql-bin.log
.
Cela sera utile si vous ne vous souciez pas beaucoup des journaux.
Comme le dit la documentation dans mysql https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_log_bin
La variable est log_bin et non log-bin au moins dans la version 5.7
J'ai eu un problème similaire lorsque j'essayais de changer la variable datadir lors d'une nouvelle installation. Dans mon cas, la solution consistait à exécuter le premier démarrage avec la log-bin désactivée. Après cela, j'ai pu le réactiver en utilisant le nouveau chemin ...
Votre configuration est erronée:
log_bin=/home/developer/logs/mysql/mysql-bin.log
Vous utiliseriez à la place
log-bin=/home/developer/logs/mysql/mysql-bin.log
Votre utilisateur a-t-il accès à tous les répertoires supérieurs? En particulier, le répertoire/home/developer /? Essayez de vous connecter avec le compte du serveur mysql et touchez le fichier journal.