web-dev-qa-db-ja.com

インストール後の手順が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

私がしたい人のために5.7に戻ることができました:

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

結局のところ、すべてのデータベースが損なわれていない状態で5.7に戻りました。私の場合、データベース内のデータが重要ではないことがわかっていたため、事前にデータをバックアップしようとしませんでした。私のためにうまく働いた。ローカルデータベースにかけがえのないデータがある場合は、慎重に検討してください。私はデータを失いませんでしたが、他の誰かが私のアドバイスでデータを失いたくないのです。 ;)

通常、MySQLのアップグレードは気にしませんが、8.0には互換性の問題があるようです。先に進む前に吟味したいと思います。それらの問題で。

7

まず、データディレクトリのコンテンツをバックアップします:/usr/local/var/mysqlを安全な場所にコピーしてバックアップします。

このエラーは、インストール後スクリプトがファイル/usr/local/var/mysql/mysql/user.frmが存在するかどうかを確認するために発生します。何らかの理由でこのファイルがありません。その後、ポストインストールスクリプトはmysqld--initialize-insecureで実行して新しいMySQL 8データベースをインストールしようとしますが、ディレクトリには既にMySQL 5.7からのデータが含まれているため、スクリプトは停止します。

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

いくつかの可能な解決策があります。それでもMySQL 5.7データベースを実行できる場合は、 mysqldump ですべてをエクスポートし、/usr/local/var/mysqlのすべてのコンテンツを削除して新しいMySQL 8データベースをインストールしてから、すべてをインポートし直します。別の解決策は、 mysql_upgradeツール を使用することです。

追伸:個人的には、式 [email protected] を使用し、今後は MariaDB に切り替えます。

3
Ortomala Lokni

インストールまたは再インストール、brew install mysql、デフォルトのデータディレクトリを作成しましたが、インストール後はそれを処理しません...

  1. 既存のデータディレクトリを移動するだけです(これにより、シェルのプロセスIDで名前が付けられた兄弟ディレクトリに移動します)。

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

    またはスーパーユーザー権限が必要になる場合があります...

    $ Sudo mv /usr/local/var/mysql /usr/local/var/mysql-$$
    
  2. 次に実行します:

    $ brew postinstall mysql