Quando tentei atualizar do PHP 7.3 para o PHP 7.4, recebi este erro:
Resposta inesperada do servidor ao executar cacheing_sha2 auth 109
A meu ver, isso indica que o MySQLi do PHP 7.4 está tentando usar o caching_sha2_password
plugin. Este artigo indica que o PHP MySQLi não suporta o plug-in (também sugere suporte futuro para ele), mas como o PHP 7.4 é novo e parece estar tentando usá-lo, acho que deve funcionar. Além disso, a mensagem de erro é diferente do que se não fosse suportada ( acesso negado x método de autenticação desconhecido ).
Então mudei meu plugin de autenticação MySQL para caching_sha2_password
(usando a mesma senha de antes):
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
FLUSH PRIVILEGES;
Mas isso causou outro erro:
Acesso negado para o usuário 'root' @ 'localhost' (usando a senha: YES).
Voltando ao PHP 7.3 e mysql_native_password
ele funciona novamente.
Usei a mesma senha para os dois plugins, o mesmo site e apliquei as mesmas alterações do php.ini. No entanto, não alterei nenhuma mysqli
configuração. Os logs do MySQL não mostram nada, o log do apache2 mostra apenas a mensagem de erro 'Acesso Negado'.
O php7.4-mysqli tem suporte caching_sha2_password
? SIM
Por que minha senha está sendo negada e como posso corrigi-la? Veja minha pergunta de acompanhamento
Além disso, se o MySQLi ainda não suportar o plugin: Como posso usá mysql_native_password
-lo?
Access Denied
e depois voltar para você.ALTER USER ... BY ''
. Quando tentei a mesma coisa, ele definiu uma senha em branco.... BY '';
era apenas a versão mais curta, na verdade eu entrei... BY 'mySecretPassword';
Access Denied
apesar de copiar literalmente a senha. Meu PHP foi construído um dia antes do seu:PHP 7.4.0 (cli) (built: Nov 28 2019 07:27:06) ( NTS )
talvez seja apenas um bug?Existem algumas maneiras de isso acontecer
mysql_client
método de autenticação. É assim que o PHP costumava fazer isso de forma nativa, conectando-se ao MySQL através da interface CLI do MySQL. O próprio cliente do MySQL sempre suportará seus próprios métodos de autenticação.Você está usando o MySQLND na versão 7.4. Aparentemente, isso foi uma melhoria para o driver nativo que não foi anunciado
Ainda existem alguns problemas possíveis.
fonte
mysql_native_password
ecaching_sha2_password
e somente a primeira obras.mysqlnd
, que pode ser o problema aqui, então acho que vou esperar pelo suporte total.