web-dev-qa-db-fra.com

L'étape de post-installation ne s'est pas terminée avec succès MySQL Mac OS Sierra

[(pyEnv) Anants-MacBook-Pro:litibackend anantchandra$ brew postinstall mysql
==> Postinstalling mysql
==> /usr/local/Cellar/mysql/8.0.11/bin/mysqld --initialize-insecure --user=anantchandra --basedir=/usr/local/Cellar/mysql/8.0.11 --datadir=/usr/local/var/mysql --tmpdir=/tmp
Last 15 lines from /Users/anantchandra/Library/Logs/Homebrew/mysql/post_install.01.mysqld:
2018-06-15 04:41:04 -0700

/usr/local/Cellar/mysql/8.0.11/bin/mysqld
--initialize-insecure
--user=anantchandra
--basedir=/usr/local/Cellar/mysql/8.0.11
--datadir=/usr/local/var/mysql
--tmpdir=/tmp

2018-06-15T11:41:04.901191Z 0 [System] [MY-013169] [Server] /usr/local/Cellar/mysql/8.0.11/bin/mysqld (mysqld 8.0.11) initializing of server in progress as process 37841
2018-06-15T11:41:04.903504Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2018-06-15T11:41:04.903537Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-06-15T11:41:04.903701Z 0 [System] [MY-010910] [Server] /usr/local/Cellar/mysql/8.0.11/bin/mysqld: Shutdown complete (mysqld 8.0.11)  Homebrew.

Warning: The post-install step did not complete successfully
You can try again using `brew postinstall mysql`
9
Anant Chandra

J'ai pu revenir à 5.7 pour tous ceux qui veulent:

brew uninstall mysql
brew install [email protected]
brew link --force [email protected]
mysql.server start
mysql_secure_installation

Après tout cela, je suis de retour en 5.7 avec toutes mes bases de données intactes. Dans mon cas, je savais que les données dans les bases de données n'étaient pas cruciales, donc je n'ai pas essayé de sauvegarder les données à l'avance. Ça a bien marché pour moi. Si vous avez des données irremplaçables dans vos bases de données locales, vous voudrez peut-être faire preuve de prudence. Je n'ai pas perdu de données, mais je ne veux pas non plus que quelqu'un d'autre perde des données sur mes conseils. ;)

Normalement, cela ne me dérange pas une mise à niveau de MySQL, mais 8.0 semble avoir des problèmes de compatibilité que je voudrais vérifier avant d'aller de l'avant, et en attendant, je préfère être de retour sur une version qui ne me force pas à traiter avec ces questions.

7
Geoffrey Wiseman

Tout d'abord, sauvegardez le contenu de votre répertoire de données: /usr/local/var/mysql en le copiant dans un endroit sûr.

L'erreur se produit car le script de post-installation vérifie si un fichier /usr/local/var/mysql/mysql/user.frm existe. Pour une raison quelconque, vous n'avez pas ce fichier. Le script de post-installation tente ensuite d'installer une nouvelle base de données MySQL 8 en exécutant mysqld avec --initialize-insecure mais comme le répertoire contient déjà des données de MySQL 5.7, le script s'arrête.

Voici la partie correspondante du script dans mysql.rb :

  def post_install
    # Make sure the datadir exists
    datadir.mkpath
    unless (datadir/"mysql/user.frm").exist?
      ENV["TMPDIR"] = nil
      system bin/"mysqld", "--initialize-insecure", "--user=#{ENV["USER"]}",
        "--basedir=#{prefix}", "--datadir=#{datadir}", "--tmpdir=/tmp"
    end
  end

Il existe plusieurs solutions possibles. Si vous pouvez toujours exécuter votre base de données MySQL 5.7, exportez tout avec mysqldump puis installez une nouvelle base de données MySQL 8 en supprimant tout le contenu dans /usr/local/var/mysql puis réimportez tout. Une autre solution consiste à utiliser outil mysql_upgrade .

P.S .: Personnellement, j'utilise la formule [email protected] et je passerai à l'avenir à MariaDB .

3
Ortomala Lokni

L'installation ou la réinstallation, brew install mysql, a créé le répertoire de données par défaut et la post-installation ne le gère pas ...

  1. Déplacez simplement le répertoire de données existant (cela le déplace vers un répertoire frère, nommé avec l'ID de processus du Shell):

    $ mv /usr/local/var/mysql /usr/local/var/mysql-$$
    

    ou pourrait avoir besoin de privilèges de super utilisateur ...

    $ Sudo mv /usr/local/var/mysql /usr/local/var/mysql-$$
    
  2. Exécutez ensuite:

    $ brew postinstall mysql