Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro:mysqlnd não pode se conectar ao MySQL 4.1+ usando a antiga autenticação insegura

  • Remover ou comentar old_passwords =1 em my.cnf

Reinicie o MySQL. Se você não fizer isso, o MySQL continuará usando o formato de senha antigo, o que significa que você não pode atualizar as senhas usando a função de hash PASSWORD() embutida.

Os hashes de senha antigos são de 16 caracteres, os novos são de 41 caracteres.

  • Conecte-se ao banco de dados e execute a seguinte consulta:
    SELECT user, Length(`Password`) FROM  `mysql`.`user`;
    

Isso mostrará quais senhas estão no formato antigo, por exemplo:
+----------+--------------------+
| user     | Length(`Password`) |
+----------+--------------------+
| root     |                 41 |
| root     |                 16 |
| user2    |                 16 |
| user2    |                 16 |
+----------+--------------------+

Observe aqui que cada usuário pode ter várias linhas (uma para cada especificação de host diferente).

Para atualizar a senha de cada usuário, execute o seguinte:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';

Por fim, libere os privilégios:
FLUSH PRIVILEGES;

Fonte:Como corrigir "o mysqlnd não pode se conectar ao MySQL 4.1+ usando autenticação antiga" no PHP5.3