J'ai installé le serveur MySQL 5.5 sur Ubuntu 12.04. J'essaie de démarrer le serveur MySQL sur un autre fichier de chaussettes. Par défaut, MySQL s'exécute sur /var/run/mysqld/mysqld.sock.
J'essaie d'exécuter le même serveur sur /var/run/mysqld/mysqld1.sock.
Pour cela, j'ai apporté les modifications suivantes:
- Modifications apportées à /etc/mysql/my.cnf
[client] port = 3306 socket = /var/run/mysqld/mysqld1.sock [mysqld_safe] socket = /var/run/mysqld/mysqld1.sock gentil = 0 [mysqld] user = mysql fichier pid = /var/run/mysqld/mysqld.pid ** socket = /var/run/mysqld/mysqld1.sock** port = 3306 basedir = / usr datadir = / var / lib / mysql tmpdir = / tmp lc-messages-dir = / usr / share / mysql
J'ai également ajouté la ligne suivante à /etc/apparmor.d/usr/sbin.mysqld
/var/run/mysqld/mysqld1.sock w,
/var/run/mysqld/mysqld[1-9{.sock w,
J'ai également changé la propriété du répertoire / var / run / mysqld en utilisateur mysql.
ls -lA / var / run / | grep mysqld
drwxrwxrwx 2 mysql mysql 40 déc 31 17:24 mysqld
Cependant, lorsque j'essaie de démarrer le serveur MySQL, j'obtiens l'erreur suivante (en tant qu'utilisateur root)
$ mysqld --user = mysql --verbose 121231 18:40:56 [Note] Le plugin 'FEDERATED' est désactivé. 121231 18:40:56 InnoDB: le tas de mémoire InnoDB est désactivé 121231 18:40:56 InnoDB: les mutex et les rw_locks utilisent des buildins atomiques GCC 121231 18:40:56 InnoDB: les tables compressées utilisent zlib 1.2.3.4 121231 18:40:56 InnoDB: Initialisation du pool de tampons, taille = 128,0M 121231 18:40:56 InnoDB: initialisation terminée du pool de tampons 121231 18:40:56 InnoDB: le format de fichier pris en charge le plus élevé est Barracuda. 121231 18:40:57 InnoDB: En attente du démarrage des threads d'arrière-plan 121231 18:40:58 InnoDB: 1.1.8 démarré; numéro de séquence du journal 1595685 121231 18:40:58 [Remarque] Nom d'hôte du serveur (adresse de liaison): '127.0.0.1'; port: 3306 121231 18:40:58 [Remarque] - '127.0.0.1' se résout en '127.0.0.1'; 121231 18:40:58 [Remarque] Socket de serveur créé sur IP: '127.0.0.1'. ** `121231 18:40:58 [ERREUR] Impossible de démarrer le serveur: liaison sur le socket Unix: autorisation refusée` ** 121231 18:40:58 [ERREUR] Avez-vous déjà un autre serveur mysqld fonctionnant sur socket: /var/run/mysqld/mysqld1.sock? 121231 18:40:58 [ERREUR] Abandon ** 121231 18:40:58 InnoDB: Démarrage de l'arrêt ... 121231 18:40:58 InnoDB: arrêt terminé; numéro de séquence du journal 1595685 121231 18:40:58 [Remarque] mysqld: arrêt terminé
Si je démarre le serveur avec le fichier socket par défaut, je peux démarrer le serveur. J'ai cherché sur ce problème sur Google, mais je n'ai trouvé que des solutions suggérant qu'il s'agissait d'un problème d'autorisations. Cependant, les autorisations semblent bonnes. Certains ont suggéré que AppArmor pourrait être une cause, mais je l'ai vérifié aussi - l'extrait est collé ci-dessus.
Quelqu'un peut-il fournir des indices?
[ÉDITER]
Je vois la sortie suivante dans /var/log/syslog
.
2 janvier 12:09:34 praveshp-lt mysqld: 130102 12:09:34 [Note] Le plugin 'FEDERATED' est désactivé. 2 janvier 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: le tas de mémoire InnoDB est désactivé 2 janvier 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: les mutex et les rw_locks utilisent les fonctions intégrées atomiques GCC 2 janvier 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: les tables compressées utilisent zlib 1.2.3.4 2 janvier 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Initialisation du pool de tampons, taille = 128.0M 2 janvier 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: initialisation terminée du pool de tampons 2 janvier 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: le format de fichier le plus pris en charge est Barracuda. 2 janvier 12:09:35 praveshp-lt mysqld: 130102 12:09:35 InnoDB: En attente du démarrage des threads d'arrière-plan 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 démarré; numéro de séquence du journal 1595685 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Remarque] Nom d'hôte du serveur (adresse de liaison): '127.0.0.1'; port: 3307 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Note] - '127.0.0.1' se résout en '127.0.0.1'; 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Remarque] Socket de serveur créé sur IP: '127.0.0.1'. 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERREUR] Impossible de démarrer le serveur: liaison sur socket unix: autorisation refusée 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERREUR] Avez-vous déjà un autre serveur mysqld fonctionnant sur le socket: /var/run/mysqld/mysqld1.sock? 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ERREUR] Abandon 2 janvier 12:09:36 praveshp-lt mysqld: 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: Démarrage de l'arrêt ... 2 janvier 12:09:36 noyau praveshp-lt: [7060.098580] type = audit 1400 (1357108776.036: 33): apparmor = "REFUSÉ" opération = "mknod" parent = 6702 profil = "/ usr / sbin / mysqld" nom = "/run/mysqld/mysqld1.sock" pid = 7039 comm = "mysqld" demandé_mask = "c" refusé_mask = "c" fsuid = 116 ouid = 116 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: arrêt terminé; numéro de séquence du journal 1595685 2 janvier 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Note] / usr / sbin / mysqld: arrêt terminé
Il dit que l'autorisation a été refusée, mais je semble avoir défini les bonnes autorisations.
/usr/local/mysql
et/tmp
. La nécessité d'être 775 au minimum. 2. L'autorisation pour le répertoire de base de données mysql sous le/var/lib/
dossier devrait êtremysql:root
(chown mysql:root mysql
)/etc/apparmor.d/usr.sbin.mysqld
Il y a une comparaison entre l'ancienne et la nouvelle version ici: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…Réponses:
En regardant cette ligne dans la ligne suivante du journal, il apparaît que Apparmor refuse l'accès.
Pour autoriser cela, ajoutez un fichier
/etc/apparmor.d/local/usr.sbin.mysqld
avec l'entrée ci-dessous et redémarrez MySQL.Merci à Rinzwind de l' avoir signalé.
la source