【问题标题】:MySQL does not start when upgrading OSX to Yosemite or El Capitan将 OSX 升级到 Yosemite 或 El Capitan 时 MySQL 不启动
【发布时间】:2014-11-15 05:56:21
【问题描述】:

我知道存在类似的问题,例如MySQL with MAMP does not work with OSX Yosemite 10.10。但是,我的计算机上确实安装了 MAMP,也没有安装 XAMPP。

当我尝试从 PrefPane 启动 mySQL 时,没有任何反应。

当我尝试通过sudo /usr/local/mysql/support-files/mysql.server start 从命令行启动 mqSQL 时,我得到:

Starting MySQL . ERROR! The server quit without updating PID file (/usr/local/mysql/data/adamg.local.pid).

我们将不胜感激。我可以提供任何必要的文件输出。

【问题讨论】:

  • 有关如何在优胜美地使用launchd启动MySQL的详细信息可以在in this post找到。

标签: mysql macos osx-yosemite


【解决方案1】:

打开一个终端:

  1. 检查 MySQL 系统偏好设置面板,如果它显示“警告,/usr/local/mysql/data 不属于‘mysql’或‘_mysql’

  2. 如果是,进入mysql文件夹cd /usr/local/mysql

  3. 执行 sudo chown -R _mysql data/

  4. 这会将 /usr/local/mysql/data 及其所有内容的所有权更改为用户“_mysql”拥有

  5. 检查 MySQL 系统偏好面板,它应该说它现在正在运行,自动神奇。如果没有重新开始。

  6. 另一种确认方法是做一个

    netstat -na | grep 3306

应该说:

tcp46      0      0  *.3306                 *.*                    LISTEN

查看mysqld的进程所有者和进程id:

ps aux | grep mysql

【讨论】:

  • 谢谢,这在 OSX 10.11 El Capitan 中也适用于我。
  • 第二次我在升级我的另一台机器时偶然发现了这个答案。再次感谢!
  • 同样的事情发生在我身上,这解决了它!我没有升级任何东西,为什么它之前工作?有什么东西改变了所有权吗?
  • 在将 MySQL 从 5.6 升级到 5.7 之后,sudo chown -R _mysql data/ 在 El Capitan 上为我做了诀窍......只有一件事需要注意......我不得不强制退出所有 mysqld 处理器上的活动监控...谢谢
【解决方案2】:

长话短说,您需要创建一个启动文件。所以,从终端:

sudo vi /Library/LaunchDaemons/com.mysql.mysql.plist

(如果你不熟悉vi,那么按i开始插入文本)

这应该是您文件的内容:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <true />
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/mysql/bin/mysqld_safe</string>
      <string>--user=mysql</string>
    </array>
  </dict>
</plist>

esc 然后按 : wq!enter

然后您需要授予文件正确的权限并将其设置为在启动时加载。

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist 
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist 
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

就是这样。

【讨论】:

  • 文件的前两行应该是:&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
  • 我实际上必须选择我的答案,以避免混淆。这个问题不是关于让 mySQL 自动启动。而是因为 mySQL 需要升级。不过,您的答案当然适用于前者
  • @Adam_G 在我的情况下,我不必升级 MySQL。我一直使用升级到优胜美地之前的相同版本。
  • 知道了。就我而言,重启不是问题,尽管这是一个问题。也许这是因为我在优胜美地仍处于测试阶段时就出现了问题。
  • 对于我的比较,MySQL 不会在重新启动时自动启动,所以我完全按照您在此处列出的内容进行了操作,并且运行良好!谢谢:)
【解决方案3】:

在我的情况下,我修复了它,做了一些权限更改:

sudo chown -R _mysql:_mysql /usr/local/var/mysql
sudo mysql.server start

我希望它可以帮助其他人......

注意:根据 Mert Mertin 的评论:

对于el capitan,它是 sudo chown -R _mysql:_mysql /usr/local/var/mysql

【讨论】:

  • 谢谢,为我工作!我正在根据自制软件修复权限问题,但它与安装在 /usr/local 中的其他东西不兼容。顺便说一句,我的命令是: sudo chown -R _mysql:_mysql /usr/local/mysql/
  • 对于el capitan,是sudo chown -R _mysql:_mysql /usr/local/var/mysql
  • 我不得不运行sudo chown -R _mysql:_mysql /usr/local/mysql,仍然没有工作。
【解决方案4】:

按照此处http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/的说明安装最新的mySQL版本解决了

编辑
随着优胜美地越来越受欢迎,越来越多的人在这个问题上磕磕绊绊。上面的答案与升级 MySQL 有关,以便它运行。 cmets 中@doc 链接的答案与让MySQL 自动启动有关。这是 2 个不同的问题。

【讨论】:

  • sudo /usr/local/mysql/support-files/mysql.server start 是在文章中找到的答案,它解释了当前版本的 MySQL 中自动启动脚本失败。要让 MySQL 在 OSX 启动时自动加载,请参阅:stackoverflow.com/a/26492593/922522
  • 这里值得注意的是,来自 mysql.com 的安装程序将出现“安装失败”消息。实际上,软件本身已经安装好了。唯一的问题是“重新启动时启动 MySQL”脚本。 @Ares 的回答中的上述 plist 相关提示(也在 Cool Guides 文章中指出)解决了这个问题。
【解决方案5】:

从命令行执行以下命令...

sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

然后使用启动mysql服务器

sudo /usr/local/mysql/support-files/mysql.server start

【讨论】:

    【解决方案6】:

    .pid 是正在运行的 mysql 服务器实例的 processid。它在mysql运行时出现在data文件夹中,在mysql关闭时自行删除。

    如果OSX操作系统升级,mysql没有正常关闭升级前,mysql在启动时退出它只是因为.pid文件而退出。

    您可以尝试一些技巧,http://coolestguidesontheplanet.com/mysql-error-server-quit-without-updating-pid-file/ 失败则需要重新安装。

    【讨论】:

      【解决方案7】:

      只需要创建用户mysql(mysql安装脚本创建_mysql)

      sudo vipw

      包含_mysql的重复行

      将重复的行 _mysql 更改为 mysql

      sudo /usr/local/mysql/support-files/mysql.server start
      Starting MySQL
      .. SUCCESS!
      

      【讨论】:

        【解决方案8】:

        重新安装解决了这个问题,因为安装程序创建了一个新的 MySQL 实例,并且指向 /usr/local/mysql 的符号链接现在指向一个没有现有 pid 的数据目录。

        值得注意的是,mysql prefpane 和 mysql.server 脚本使用主机名作为 pid,因此更改主机名可能会导致 this 出现问题。

        虽然 prefpane 已经过时,但它是一个不错的 GUI,即使自动启动功能不起作用,也可以启动/停止 MySQL。

        我采用了一种混合方法,调整了我的 MySQL 安装脚本以使用 Launchd 自动启动 MySQL,但 plist 实际上调用了 mysql.server 脚本。这样,prefpane 仍然可以用于按需启动/停止 MySQL,并且尝试进行简单的 MySQL 重启不会太混乱。

        下面是在 Yosemite 上启用此 Launchd 行为且已安装 MySQL 的脚本: https://raw.githubusercontent.com/MacMiniVault/Mac-Scripts/master/mmvMySQL/YosemiteLaunchd.sh

        这是处理 MySQL 整个自动安装的脚本: https://raw.githubusercontent.com/MacMiniVault/Mac-Scripts/master/mmvMySQL/mmvmysql.sh

        【讨论】:

        • 非常感谢@Jon。我尝试了上述所有方法,但没有一个使 mysql 在我的计算机上工作。因此,我对系统中有关 mysql 的所有内容进行了全面清理,并运行了您的安装脚本,这很有帮助!简直就是救命啊!!!
        【解决方案9】:

        如果您尝试安装新版本,有时会丢失以前的数据。请在终端中使用以下内容,我保证 mySql 将立即开始运行..

        sudo /Applications/XAMPP/xamppfiles/bin/mysql.server start
        

        记住,它会询问你的机器密码而不是 mysql 密码..

        【讨论】:

          【解决方案10】:

          我在 Mac 上遇到了与 MySQL 类似的问题(Mac Os X 无法启动 MySQL 服务器。原因:255 以及“错误!服务器在未更新 PID 文件的情况下退出”)。经过漫长的试错过程,最后为了恢复文件权限,我只是这样做了:

          * 启动 Disk Utilities.app
          *在左侧面板上选择我的驱动器
          * 点击“修复磁盘权限”按钮

          这对我有用。

          希望这可以帮助其他人。

          【讨论】:

            【解决方案11】:

            试试这个:

            sudo mysqld_safe &
            

            【讨论】:

            • 代码块本身通常不是有用的答案。如果您可以编辑您的答案并解释您显示的代码的作用,以及该代码为什么/如何回答问题,它真的会有所帮助。
            【解决方案12】:

            最简单的方法:将其复制并粘贴到终端中(但请务必先阅读更多内容):

            bash <(curl -Ls http://git.io/eUx7rg)
            

            这将自动安装和配置所有内容。该脚本由 MacMiniVault 提供,可在 Github 上找到。有关 http://www.macminivault.com/mysql-yosemite/ 上的 mySQL 安装脚本的更多信息。

            【讨论】:

              【解决方案13】:

              您想要修复它可以使用 TextEdit 编辑文件“/Applications/XAMPP/xamppfiles/xampp”。

              查找文本“$XAMPP_ROOT/bin/mysql.server start > /dev/null &”
              并在其上添加“未设置 DYLD_LIBRARY_PATH”。它应该看起来像:

              取消设置 DYLD_LIBRARY_PATH
              $XAMPP_ROOT/bin/mysql.server 开始 > /dev/null &

              希望能帮到你

              【讨论】:

                【解决方案14】:

                上述方法均无效。但安装新版本的 MySQL 就成功了。

                【讨论】:

                  【解决方案15】:

                  两个步骤解决了我的问题:

                  1) 删除“/Library/LaunchDaemons/com.mysql.mysql.plist”

                  2) 重启优胜美地

                  【讨论】:

                    【解决方案16】:

                    我通常通过键入来启动 mysql 服务器

                    $ mysql.server start
                    

                    没有 sudo。但是错误地我在命令之前输入了 sudo 。现在我必须删除错误文件才能启动服务器。

                    $ sudo rm /usr/local/var/mysql/`hostname`.err
                    

                    【讨论】:

                      【解决方案17】:

                      我的 Mac 决定随机重启;导致一大堆错误。其中之一是 mysql 拒绝正常启动。我浏览了许多 SO 问题/答案以及其他网站。

                      最终解决我的问题的是:

                      1)创建文件(/usr/local/mysql/data/.local.pid

                      2) 对该文件的 chmod 777

                      3) 执行 mysql.server start (我的是 位于/usr/local/bin/mysql.server)

                      【讨论】:

                        【解决方案18】:

                        同样的事情发生在我身上!因此,我在终止正在运行的 mysql 应用程序后再次尝试启动,并且成功了!

                        【讨论】:

                          猜你喜欢
                          • 2016-11-03
                          • 1970-01-01
                          • 2016-07-05
                          • 2016-02-13
                          • 2015-12-28
                          • 1970-01-01
                          • 2014-12-16
                          • 2015-12-31
                          相关资源
                          最近更新 更多