Recentemente, minha configuração do Homebrew MySQL começou a falhar ao tentar iniciar. Quando executo mysql.server start
, recebo o seguinte erro:
$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/MacBookPro.pid).
Aqui estão os logs de /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
O que é interessante é a seguinte linha, que parece ser o problema:
2025-01-01T22:08:13.719572Z 0 [ERROR] [MY-000067] [Server] unknown variable 'default_authentication_plugin=mysql_native_password'.
Aqui está 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
Outro ponto de dados é que se eu executar mysql.server stop
, recebo este erro:
$ mysql.server stop
ERROR! MySQL server PID file could not be found!
Aqui está minha versão do MySQL:
$ mysql --version
mysql Ver 9.0.1 for macos15.1 on arm64 (Homebrew)
Estou executando o macOS Sequoia 15.2 em um MacBook Pro M1.
Há uma série de posts semelhantes, mas nenhum deles parece ajudar. Eu também preferiria não apagar meu banco de dados e começar de novo, se possível.
Alguém sabe o que pode estar causando isso e como consertar? Pode ser que o MySQL 9 não suporte default_authentication_plugin=mysql_native_password
?
Eu me deparei com algo parecido na minha própria configuração. O problema é que sua versão do MySQL não reconhece a
default_authentication_plugin=mysql_native_password
linha emmy.cnf
. O MySQL 8 usava esse parâmetro, mas no MySQL 9, ele parece ter mudado ou sido removido.A maneira mais fácil de consertar isso é abrir
/opt/homebrew/etc/my.cnf
(ou onde quer que vocêmy.cnf
esteja), remover ou comentar adefault_authentication_plugin
linha e tentar iniciar o MySQL novamente. Você também pode defini-lo explicitamente para qualquer plugin que seja oficialmente suportado pelo MySQL 9 (caching_sha2_password
é o padrão típico agora), mas um teste rápido é apenas comentar essa linha e ver se o MySQL inicia corretamente.Se isso não funcionar, certifique-se de que você está usando a mesma versão do MySQL em todos os lugares — o Homebrew pode ocasionalmente deixar resquícios de instalações mais antigas do MySQL. Pode ajudar fazer algo como:
Então garanta que os links simbólicos estejam definidos para a versão correta. Se o MySQL ainda se recusar a iniciar, você pode tentar mover seu diretório de dados (a
/opt/homebrew/var/mysql
pasta) para fora do caminho temporariamente, deixando o MySQL reinicializar um novo diretório de dados e, em seguida, trazendo seus dados de volta. Mas, na maioria das vezes, simplesmente remover ou atualizar adefault_authentication_plugin
linha corrige o problema de travamento na inicialização.