代码之家  ›  专栏  ›  技术社区  ›  archetypezero

Homebrew mysqld崩溃循环,启动时抛出“服务器退出而不更新PID文件”[重复]

  •  -1
  • archetypezero  · 技术社区  · 1 年前

    最近,我的Homebrew MySQL设置在尝试启动时开始失败。当我奔跑时 mysql.server start ,我得到以下错误:

    $ mysql.server start
    Starting MySQL
    .. ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/MacBookPro.pid).
    

    以下是来自的日志 /opt/homebrew/var/mysql/${computer_name}.err :

    2025-01-01T22:08:13.6NZ mysqld_safe Logging to '/opt/homebrew/var/mysql/MacBookPro.err'.
    2025-01-01T22:08:13.6NZ mysqld_safe Starting mysqld daemon with databases from /opt/homebrew/var/mysql
    2025-01-01T22:08:13.378645Z 0 [System] [MY-015015] [Server] MySQL Server - start.
    2025-01-01T22:08:13.521513Z 0 [System] [MY-010116] [Server] /opt/homebrew/opt/mysql/bin/mysqld (mysqld 9.0.1) starting as process 40612
    2025-01-01T22:08:13.522727Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive
    2025-01-01T22:08:13.536732Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
    2025-01-01T22:08:13.583485Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
    2025-01-01T22:08:13.716166Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    2025-01-01T22:08:13.716195Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
    2025-01-01T22:08:13.719572Z 0 [ERROR] [MY-000067] [Server] unknown variable 'default_authentication_plugin=mysql_native_password'.
    2025-01-01T22:08:13.720023Z 0 [ERROR] [MY-010119] [Server] Aborting
    2025-01-01T22:08:14.884732Z 0 [System] [MY-010910] [Server] /opt/homebrew/opt/mysql/bin/mysqld: Shutdown complete (mysqld 9.0.1)  Homebrew.
    2025-01-01T22:08:14.884778Z 0 [System] [MY-015016] [Server] MySQL Server - end.
    2025-01-01T22:08:14.6NZ mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/MacBookPro.pid ended
    

    有趣的是下面这句话,这似乎是问题所在:

    2025-01-01T22:08:13.719572Z 0 [ERROR] [MY-000067] [Server] unknown variable 'default_authentication_plugin=mysql_native_password'.
    

    这是 my.cnf :

    # Default Homebrew MySQL server config
    [mysqld]
    default_authentication_plugin= mysql_native_password
    
    # Only allow connections from localhost
    bind-address = 127.0.0.1
    mysqlx-bind-address = 127.0.0.1
    

    另一个数据点是,如果我运行 mysql.server stop ,我得到这个错误:

    $ mysql.server stop
     ERROR! MySQL server PID file could not be found!
    

    以下是我的MySQL版本:

    $ mysql --version
    mysql  Ver 9.0.1 for macos15.1 on arm64 (Homebrew)
    

    我在M1 MacBook Pro上运行macOS Sequoia 15.2。

    有很多类似的帖子,但似乎都没有帮助。如果可能的话,我也不想删除我的数据库并重新开始。

    有人知道是什么导致了这种情况,以及如何解决吗?这可能是MySQL 9不支持吗 default_authentication_plugin=mysql_native_password ?

    1 回复  |  直到 1 年前
        1
  •  0
  •   Todd DeLozier    1 年前

    我在自己的设置中遇到了类似的东西。关键是你的MySQL版本无法识别 default_authentication_plugin=mysql_native_password 线in my.cnf MySQL 8使用了该参数,但在MySQL 9中,它似乎已被更改或删除。

    解决这个问题最简单的方法就是敞开心扉 /opt/homebrew/etc/my.cnf (或无论你在哪里 my.cnf 生活),删除或评论 default_authentication_plugin 行,然后再次尝试启动MySQL。你也可以明确地将其设置为MySQL 9官方支持的任何插件( caching_sha2_password 现在是典型的默认设置),但一个快速的测试是注释掉这一行,看看MySQL是否能干净启动。

    如果这不起作用,请确保您全面使用相同版本的MySQL Homebrew偶尔会留下旧MySQL安装的残留物。做以下事情可能会有所帮助:

    brew update && brew upgrade
    brew unlink mysql && brew link mysql
    

    然后确保符号链接设置为正确的版本。如果MySQL仍然拒绝启动,您可以尝试移动您的数据目录( /opt/homebrew/var/mysql 文件夹),让MySQL重新初始化一个新的数据目录,然后将数据带回。但通常情况下,只是删除或更新 default_authentication_plugin line修复了启动时的崩溃问题。