安装后的步骤没有成功完成MySQL Mac OS Sierra

时间:2018-06-15 11:44:05

标签: mysql install homebrew

[(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`

4 个答案:

答案 0 :(得分:7)

对于任何想要的人,我都能回到5.7:

brew uninstall mysql
brew install mysql@5.7
brew link --force mysql@5.7
mysql.server start
mysql_secure_installation

所有这些之后,我回到了5.7,所有数据库都完整无缺。就我而言,我知道数据库中的数据不是至关重要的,因此我没有尝试预先备份数据。对我来说很好。如果本地数据库中有不可替代的数据,则可能需要谨慎行事。我没有丢失数据,但是我也不希望其他人也丢失我建议中的数据。 ;)

通常,我不介意进行MySQL升级,但是8.0似乎存在一些兼容性问题,我想在继续进行之前进行审查,同时,我宁愿使用不会强制升级的版本我来处理那些问题。

答案 1 :(得分:3)

首先,将数据目录/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 tool

P.S .:就我个人而言,我使用公式mysql@5.7,将来我会改用MariaDB

答案 2 :(得分:0)

安装或重新安装brew install mysql创建了默认的数据目录,而后期安装则无法对其进行处理...

  1. 只需移动现有数据目录(这会将其移动到同级目录,并使用shell的进程ID命名):

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

    或者可能需要超级用户权限...

    $ sudo mv /usr/local/var/mysql /usr/local/var/mysql-$$
    
  2. 然后运行:

    $ brew postinstall mysql
    

答案 3 :(得分:0)

根据this link,以下命令可将我保存在macOS Mojave上:

sudo chown -R $(whoami) /usr/local/*