2 votes

MySQL : mysqld_safe fonctionne mais je ne parviens pas à démarrer le service mysql, pourquoi ?

Je suis en train d'utiliser MySQL 5.6.19 sur une machine Centos 5.

J'ai supprimé le répertoire des données et en ai créé un nouveau avec :

mysql_install_db --user=mysql --datadir=/var/lib/mysql

Quand je lance :

mysqld_safe &

tout fonctionne bien, mais quand j'essaie de démarrer le service, j'obtiens l'erreur suivante :

Démarrage de MySQL. ERREUR ! Le serveur a quitté sans mettre à jour le fichier PID
(/var/lib/mysql/localhost.localdomain.pid).

et le journal des erreurs affiche :

140720 07:30:18 mysqld_safe Démarrage du démon mysqld avec les bases de données de /var/lib/mysql
140720 07:30:19 mysqld_safe mysqld à partir du fichier PID /var/lib/mysql/localhost.localdomain.pid s'est terminé

Tous les fichiers dans /var/lib/mysql/ sont propriété de mysql:mysql. J'ai essayé de mettre my.cnf dans différents emplacements, à savoir /etc/, /usr/, /var/lib/mysql/.

Voici my.cnf :

[mysqld]

innodb_strict_mode = ON
innodb_buffer_pool_size = 2G
innodb_file_per_table = ON
innodb_file_format = Barracuda
innodb_compression_level = 9
innodb_flush_method = O_DIRECT
innodb_log_files_in_group = 2
innodb_log_file_size = 1G
innodb_log_buffer_size = 128M
innodb_flush_log_at_trx_commit = 1
innodb_thread_concurrency = 2

max_allowed_packet = 1G

tmp_table_size = 1G
max_heap_table_size = 1G

query_cache_type = 0
query_cache_size = 0

log_output = TABLE
slow_query_log = ON
log_error = mysql-error.log

skip-name-resolve

Des idées ? Merci !

0voto

user34814 Points 41

Le problème était lié à SELinux. Les permissions SELinux sur les répertoires nouvellement créés n'étaient pas correctement définies.

J'ai découvert cela en regardant /var/log/messages. Il y avait des entrées comme :

kernel: type=1400 audit(...): avc:  denied ...

Pour le corriger, j'ai utilisé :

semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"

restorecon -Rv /var/lib/mysql

La première commande n'était probablement pas nécessaire, puisque j'ai obtenu

/usr/sbin/semanage: File context for /var/lib/mysql(/.*)? already defined

La deuxième commande a résolu le problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X