2017-10-12 7 views
1

J'ai une instance amazon ec2 s'exécutant sur Amazon Linux AMI. Je suis en train de déplacer le répertoire de données pour MySQL sur un second volume (monté sur /home/ec2-user/data) avec suivant le fichier de configuration (/etc/my.cnf) mais MySQL ne démarre pas:Le serveur MySQL ne fonctionne pas si vous utilisez un autre répertoire de données

[mysqld] 
datadir=/home/ec2-user/data/mysql 
socket=/home/ec2-user/data/mysql/mysql.sock 
log-bin=/var/log/mysql/mariadb-bin 
log-bin-index=/var/log/mysql/mariadb-bin.index 
symbolic-links=0 

[mysqld_safe] 
log-error=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 

[client] 
port=3306 
socket=/home/ec2-user/data/mysql/mysql.sock 

Je reçois ces messages d'erreur dans le fichier journal:

2017-10-12 14:06:33 20082 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 
2017-10-12 14:06:33 20082 [ERROR] Can't start server : Bind on unix socket: Permission denied 
2017-10-12 14:06:33 20082 [ERROR] Do you already have another mysqld server running on socket: /home/ec2-user/data/mysql/mysql.sock ? 
2017-10-12 14:06:33 20082 [ERROR] Aborting 

Quand je mets le fichier de configuration de retour aux anciens paramètres (à la sauvegarde du dossier de données) tout fonctionne bien:

[mysqld] 
datadir=/var/lib/mysql.bak 
socket=/var/lib/mysql.bak/mysql.sock 

log-bin=/var/log/mysql/mariadb-bin 
log-bin-index=/var/log/mysql/mariadb-bin.index 
symbolic-links=0 

[mysqld_safe] 
log-error=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 

[client] 
port=3306 
socket=/var/lib/mysql.bak/mysql.sock 

Que pourrait être la cause de ce problème? J'ai déjà vérifié les permissions sur le nouveau dossier de données mais cela ne change rien.

+0

pouvez-vous publier le résultat de ps ax | grep mysql? – farbiondriven

+0

Salut farbiondriven, la seule sortie que je reçois est en cours d'exécution 'ps ax | grep mysql'is '25418 pts/0 S + 0:00 grep --color = auto mysql' – Vama

+0

pouvez-vous envoyer ls -la /home/ec2-user/data/mysql/mysql.sock et ls -la/var/lib /mysql.bak/mysql.sock? peut-être que le processus ne peut pas accéder au nouveau fichier. – farbiondriven

Répondre

0

Exécutez cette commande:

chgrp -R mysql /home/ec2-user/data/mysql 
chown -R mysql /home/ec2-user/data/mysql 

Pouvez-vous essayer le fichier de configuration suivante?

[mysqld] 
datadir=/home/ec2-user/data/mysql 
socket=/var/lib/mysql.bak/mysql.sock 

log-bin=/var/log/mysql/mariadb-bin 
log-bin-index=/var/log/mysql/mariadb-bin.index 
symbolic-links=0 

[mysqld_safe] 
log-error=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 

[client] 
port=3306 
socket=/var/lib/mysql.bak/mysql.sock 
+0

Mysql ne sera pas commencer mais dans les journaux le socket est créé et puis je reçois une nouvelle erreur '[ERREUR] Erreur fatale: Impossible d'ouvrir et de verrouiller les tables de privilèges: Table 'utilisateur' est en lecture seule' – Vama

+0

avez-vous attribuer la propriété et les droits de l'utilisateur exécutant mysql sur le dossier/home/ec2-user/data/mysql? – farbiondriven

+0

J'ai défini ces droits pour le dossier: 'drwxr-xr-x 5 mysql mysql 4096 Oct 12 15:29 mysql' (le même droit de /var/lib/mysql.bak) – Vama