Pourquoi l'installation de MySQL 5.6 sur Ubuntu 14.04 a-t-elle échoué?

30

Je voulais jeter un œil à MySQL 5.6 sur Ubuntu 14.04 juste par curiosité. Et sur la base de cet article, il semble que l'installation devrait être simple et directe. J'ai donc lancé un micro serveur AWS EC2 exécutant Ubuntu 14.04 (64 bits), connecté à mon instance vierge (via PuTTY) et émis les commandes suivantes:

$ sudo apt-get update
$ sudo apt-get build-dep mysql-server-5.6
$ sudo apt-get install mysql-server-5.6

(Les deux premières commandes étaient des mouvements désespérés, car le simple fait de courir apt-get installseul n'avait pas fonctionné auparavant. Mais même avec les trois commandes, l'étape d'installation ne fonctionnait toujours pas.)

Au point où je m'attendais, sur la base de l'article référencé ci-dessus, à voir cette sortie de la commande finale:

mysql start/running, process 2355  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  

Je l'ai eu à la place:

start: Job failed to start  
invoke-rc.d: initscript mysql, action "start" failed.  
dpkg: error processing package mysql-server-5.6 (--configure):  
 subprocess installed post-installation script returned error exit status 1  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  
Errors were encountered while processing:  
 mysql-server-5.6  
E: Sub-process /usr/bin/dpkg returned an error code (1)

Quelqu'un peut-il voir ce qui s'est mal passé?

WebLearner
la source
1
que dit le journal? cat /var/log/mysql.err
Paté

Réponses:

22

Le problème que vous rencontrez ressemble à ce rapport de bogue . L'échec de démarrage semble être dû au fait que la configuration par défaut de MySQL 5.6 nécessite plus de mémoire que ce qui peut être obtenu dans votre micro-instance.

La solution à l'erreur semble être d'effectuer l'une des opérations suivantes:

  • Augmentez la quantité de mémoire dans votre instance EC2
  • Définissez une valeur plus petite pour la max_connectionsvariable de MySQL
Mike Miller
la source
1
Oui, ce problème est EXACTEMENT l'erreur indiquée dans ce rapport de bogue. Merci! Jusqu'à présent, j'ai essayé la solution rapide suggérée, qui était de s'assurer que /etc/apparmor.d/local/usr.sbin.mysqld existait, et malheureusement, cela ne l'a pas fait. Alors maintenant, je vais essayer une installation avec plus de mémoire.
WebLearner
1
Pour le prochain essai, au lieu d'utiliser une instance EC2, j'ai créé une machine virtuelle Ubuntu 14.04 avec 2 Go de mémoire en utilisant Oracle VM Virtualbox, et dans cet environnement, l'installation MySQL 5.6 s'est déroulée sans problème sudo apt-get install mysql-server-5.6. Il apparaît donc certainement qu'une micro-instance EC2 n'a pas assez de mémoire pour installer MySQL 5.6 en utilisant apt-get!
WebLearner
1
Un commentaire supplémentaire a été ajouté au rapport de bogue qui suggérait de réduire les max_connections de MySQL avant d'installer MySQL 5.6. J'ai suivi ce conseil et ajouté un fichier .cnf à /etc/mysql/conf.d qui contenait deux lignes: "[mysqld]" et "max_connections = 20". Avec ce fichier en place, mon installation MySQL sur un nouveau micro EC2 a navigué. (Selon la documentation, la valeur par défaut de max_connections est 151. La définir sur 20 est probablement extrême. Mais au moins, cela montre qu'il est possible d'obtenir MySQL à installer.)
WebLearner
Pour plus d'informations: je vérifie /var/lib/dpkg/info/mysql-server-5.6.postinst et j'ai trouvé que vous pouvez exécuter ce script pour reproduire les étapes exactes qui échouent
shakaran
Cela fonctionne sur mon vagabond, j'ai mis la RAM 1G et l'ai réparé. Je vous remercie. : D
Chu-Siang Lai
24

J'ai rencontré le même problème lorsque j'ai lancé mon petit VPS. Le problème est dû à une petite mémoire. Donc, sans dépenser d'argent supplémentaire pour augmenter la mémoire dont vous n'avez pas besoin, vous pouvez simplement créer des fichiers d'échange pour faciliter l'installation. Oui, l'échange est lent, mais tout ce dont vous avez besoin est de faire l'installation.

Sur Ubuntu 14.04, je fais ce qui suit pour résoudre le problème:

Créez un fichier d'échange 4G:

sudo fallocate -l 4G /swapfile

Changer son autorisation pour que root puisse accéder et changer:

sudo chmod 600 /swapfile

Faites-le échanger:

sudo mkswap /swapfile

Activer:

sudo swapon /swapfile

Vous pouvez maintenant réessayer d'installer mysql, cela devrait réussir cette fois. N'oubliez pas de supprimer la précédente installation infructueuse avant de le faire.

Arthur Wang
la source
Oui, réponse parfaite. Absolument génial.
Wren
3

J'ai rencontré le même problème. Bien que j'avais la mémoire suffisamment grande de 12 Go donnée à ma machine virtuelle, mais les choses échouaient toujours comme en question. Après avoir passé un peu de temps, il a été constaté que l'apt get par défaut manquait certains des packages de traduction de configuration et de traduction d'outil.

Le référentiel MySQL apt fournit un moyen simple et pratique d'installer et de mettre à jour les produits MySQL avec les derniers progiciels utilisant apt-get. Voici ce que vous devez suivre:

  1. Ajouter le référentiel MySQL APT Tout d'abord, ajoutez le référentiel apt MySQL à la liste des référentiels logiciels de votre système. Suivez ces étapes:

    • Accédez à la page de téléchargement du référentiel apt MySQL à l' adresse http://dev.mysql.com/downloads/repo/apt/ .

    • Sélectionnez et téléchargez le package de version.

    • Installez le package de version téléchargé avec la commande suivante, en remplaçant version-specific-package-name par le nom du package téléchargé (précédé de son chemin d'accès, si vous n'exécutez pas la commande dans le dossier où se trouve le package):

      sudo dpkg -i /PATH/version-specific-package-name.deb
      

    Notez que le même paquet fonctionne sur toutes les plateformes Debian et Ubuntu prises en charge.

    • Lors de l'installation du package, il vous sera demandé de choisir les versions du serveur MySQL et des autres composants (par exemple, MySQL Workbench) que vous souhaitez installer. Si vous n'êtes pas sûr de la version à choisir, ne modifiez pas les options par défaut sélectionnées pour vous. Vous pouvez également choisir aucun si vous ne souhaitez pas qu'un composant particulier soit installé. Après avoir fait les choix pour tous les composants, choisissez OK pour terminer la configuration et l'installation du package de version.

    vous pouvez toujours modifier vos choix pour les versions plus tard;
    voir Sélection d'une version majeure pour les instructions.

    • Mettez à jour les informations de package à partir du référentiel MySQL APT avec la commande suivante (cette étape est obligatoire):

      sudo apt-get update
      
  2. Installer MySQL avec APT

    • Installez MySQL à l'aide de la commande suivante:

      sudo apt-get install mysql-server
      

Cela installe le package pour le serveur MySQL, ainsi que les packages pour le client et pour les fichiers communs de la base de données.

Pendant l'installation, il y a deux demandes par les boîtes de dialogue: Fournissez un mot de passe pour l'utilisateur root pour votre installation MySQL.

  1. Démarrage et arrêt du serveur MySQL

Le serveur MySQL démarre automatiquement après l'installation. - Vous pouvez vérifier l'état du serveur MySQL avec la commande suivante:

sudo service mysql status
  • Arrêtez le serveur MySQL avec la commande suivante:

    sudo service mysql stop
    
  • Pour redémarrer le serveur MySQL, utilisez la commande suivante:

    sudo service mysql start
    

J'ai suivi cette http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install . Cela a fonctionné sans problème et a téléchargé tous les packages et a été installé avec succès mysql 5.6.

Ritesh
la source
Merci David. Cela a du sens. J'ai changé la réponse en étapes plus détaillées. Merci.
Ritesh
+1 pour la réponse améliorée.
David Foerster
le dernier était moi… c'est vraiment moi? :)
rapide
2

Dans mon cas, j'ai ajouté

innodb_buffer_pool_size = 20M

au /etc/mysql/my.cnf

Maxkoryukov
la source
1
L'utilisateur a des problèmes pour installer MySQL, ne pas l'utiliser.
Merci, j'ai lu la question) J'ai eu le même problème lors de l'installation. En fait, l'installation est terminée et mysql est déjà accessible en tant que service, et nous pourrions l'exécuter. Mais à la dernière étape du processus d'installation (démarrage de mysqld), nous avons détecté cette erreur gênante.
maxkoryukov
1

J'ai rencontré ce problème sur Ubuntu 15.10. Pour moi, ce n'était pas un problème de mémoire (j'ai 2 Go de RAM et 18 Go de swap, dont seulement 300 Mo au total).

Dans mon cas, je dpkgcherchais /etc/mysql/conf.d, ce qui n'existait pas (cependant /etc/mysql/mysql.conf.d!). La réinstallation de mysql et la création manuelle du dossier ont /etc/mysql/conf.drésolu mon problème.

Comment cela s'est-il produit exactement? Je n'ai aucune idée. Je ne voulais presque pas partager ma réponse, car je parie que cette solution est spécifique à mon ordinateur.

J'ai résolu ce problème en utilisant l'utilitaire strace, qui est fantastique pour ce genre de chose, s'il est incroyablement verbeux.

Je l'ai utilisé comme ceci:

  • Après avoir appuyé à ctrlcmi-course apt-get install mysql-server, j'ai dû courir dpkg --configure -apour terminer l'installation.

  • J'ai couru strace 2>/tmp/trace dpkg --configure -a. Cela m'a fait une belle stracebûche /tmp/trace.

  • J'ai regardé à travers le journal, surtout en bas, où il a échoué.

  • J'ai remarqué qu'il essayait d'accéder /etc/mysql/conf.det j'ai obtenu le code d'erreur ENOENT, aucun fichier ou répertoire de ce type .

Pour tous ceux qui veulent essayer, faites le strace 2>/tmp/trace (command)et faites le salut ENOENT. Comme je l'ai dit, cette solution est probablement spécifique à mon ordinateur, mais vous voudrez peut-être l'essayer.

abricot garçon
la source
0

Dans mon cas, tout ce que j'avais à faire était de faire quelques changements my.cnfet de supprimer simplement 2 fichiers journaux nommés ib_logfile0et ib_logfile1, et de démarrer mysql

service mysql start

Pas besoin de réinstaller mysql, supprimez simplement ces 2 fichiers journaux et redémarrez le serveur mysql

Ci-dessous les modifications que j'ai apportées à my.cnf:

max_connections     = 1000     
max_allowed_packet  = 1024M
wait_timeout        = 7200 
Lavina Chitara
la source
Veuillez ajouter un peu plus à votre réponse pour que les autres puissent suivre.
George Udosen