Original post: http://anothermysqldba.blogspot.com/2013/09/mysql-access-and-replication-blocked-by.html
Se você já tentou se conectar a um banco de dados MySQL e você verá este erro, então você precisa ter uma senha de hash 41byte válido. Se você não tem certeza que você tem executar o SQL abaixo. Se você tem 16 senhas com caracteres que são senhas mais velhos.
O seguinte é como eu resolvi isso como parte de uma migração do MySQL 5.0 para o MySQL 5.6.
O servidor MySQL 5.0 tinha uma mistura dos mais velhos pré 4.1 e senhas 41byte válidos. Como o servidor MySQL 5.0 tinha algumas contas com as senhas mais velhos que eu decidi não descarregar a tabela MySQL como parte da configuração de replicação. Eu fiz despejar todos os bancos de dados, exceto o banco de dados mysql. Isso permitirá que garantiu que eu iria manter os MySQL 5.6 melhorias tabela válidos.
O servidor MySQL 5.6 instalado facilmente e foi para cima e eu carreguei os dados de despejo. Parte da migração era usar replicação, enquanto eles avaliaram o novo banco de dados. Enquanto no servidor MySQL 5.6 Eu testei a conta de usuário de replicação. A resposta que recebi foi o erro no topo desta página. Replicação não irá correr naturalmente sem uma conta de usuário válida. É por isso que os logs de erro foi me dando esse erro:
Uma rápida revisão da conta no servidor MySQL 5.0 mostrou que a nova conta foi criada com a senha pré 4.1. Então, eu precisava atualizar a conta para uma senha de 41 byte válido.
A consulta a seguir mostrou que eles realmente têm senhas antigas habilitado. Então eu tenho que desativar isso e atualizar a conta de usuário novamente para definir a senha como um 41 byte de hash válido.
A verificação da senha mostrou a senha como a senha 41byte agora. Eu estava presente capaz de se conectar ao servidor primário do servidor secundário e evitar o erro secure_auth. replicação conectado com facilidade e problema foi resolvido.
Daqui para frente eu precisava para obter o MySQL 5.0 contas de usuários no servidor MySQL 5.6. (Já que eu saltei-los como parte da construção do servidor secundário.)
O cliente precisava definir as bolsas novamente para cada usuário, independentemente de senha válida ou não.
Então, eu instruí-los para executar o seguinte sql. Eu poderia ter feito isso, mas eu preciso saber todas as suas senhas e que não era necessário.
Para cada usuário em seu sistema. Você não tem que fazer o root porque você já tem uma conta root válido no sistema 5.6.
Para reunir o sql necessários para cada usuário execute o seguinte:
Para cada resultado deu executar a instrução "mostra doações" e, em seguida, executar a instrução dada.
As declarações devem ser semelhante ao seguinte:
Replicação então criado e preenchido a tabela MySQL no servidor MySQL 5.6.
Mais pode ser encontrado aqui:
http://dev.mysql.com/doc/refman/5.6/en/password-hashing.html
ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
Se você já tentou se conectar a um banco de dados MySQL e você verá este erro, então você precisa ter uma senha de hash 41byte válido. Se você não tem certeza que você tem executar o SQL abaixo. Se você tem 16 senhas com caracteres que são senhas mais velhos.
select Password from mysql.user;
O seguinte é como eu resolvi isso como parte de uma migração do MySQL 5.0 para o MySQL 5.6.
O servidor MySQL 5.0 tinha uma mistura dos mais velhos pré 4.1 e senhas 41byte válidos. Como o servidor MySQL 5.0 tinha algumas contas com as senhas mais velhos que eu decidi não descarregar a tabela MySQL como parte da configuração de replicação. Eu fiz despejar todos os bancos de dados, exceto o banco de dados mysql. Isso permitirá que garantiu que eu iria manter os MySQL 5.6 melhorias tabela válidos.
O servidor MySQL 5.6 instalado facilmente e foi para cima e eu carreguei os dados de despejo. Parte da migração era usar replicação, enquanto eles avaliaram o novo banco de dados. Enquanto no servidor MySQL 5.6 Eu testei a conta de usuário de replicação. A resposta que recebi foi o erro no topo desta página. Replicação não irá correr naturalmente sem uma conta de usuário válida. É por isso que os logs de erro foi me dando esse erro:
[ERROR]
Slave I/O: error connecting to master
'<user>@<hostname>:3306' - retry-time: 10 retries: 68,
Error_code: 2049
Uma rápida revisão da conta no servidor MySQL 5.0 mostrou que a nova conta foi criada com a senha pré 4.1. Então, eu precisava atualizar a conta para uma senha de 41 byte válido.
A consulta a seguir mostrou que eles realmente têm senhas antigas habilitado. Então eu tenho que desativar isso e atualizar a conta de usuário novamente para definir a senha como um 41 byte de hash válido.
>SELECT @@session.old_passwords, @@global.old_passwords;
+-------------------------+------------------------+
| @@session.old_passwords | @@global.old_passwords |
+-------------------------+------------------------+
| 1 | 1 |
+-------------------------+------------------------+
1 row in set (0.00 sec)
>SET @@session.old_passwords = 0;
Query OK, 0 rows affected (0.00 sec)
>GRANT REPLICATION SLAVE ON *.* TO '<user>'@'<ip_address>' IDENTIFIED BY '<Password>';
Query OK, 0 rows affected (0.00 sec)
A verificação da senha mostrou a senha como a senha 41byte agora. Eu estava presente capaz de se conectar ao servidor primário do servidor secundário e evitar o erro secure_auth. replicação conectado com facilidade e problema foi resolvido.
Daqui para frente eu precisava para obter o MySQL 5.0 contas de usuários no servidor MySQL 5.6. (Já que eu saltei-los como parte da construção do servidor secundário.)
O cliente precisava definir as bolsas novamente para cada usuário, independentemente de senha válida ou não.
Então, eu instruí-los para executar o seguinte sql. Eu poderia ter feito isso, mas eu preciso saber todas as suas senhas e que não era necessário.
Para cada usuário em seu sistema. Você não tem que fazer o root porque você já tem uma conta root válido no sistema 5.6.
>SET @@session.old_passwords = 0;
>show grants for '<User>'@'<Host>';
SELECT CONCAT("SHOW GRANTS FOR '",User,"'@'",Host,"';") as sql_command from mysql.user;
Para cada resultado deu executar a instrução "mostra doações" e, em seguida, executar a instrução dada.
As declarações devem ser semelhante ao seguinte:
GRANT USAGE ON *.* TO 'bob'@'%.example.org' IDENTIFIED BY 'cleartext password';
Replicação então criado e preenchido a tabela MySQL no servidor MySQL 5.6.
Mais pode ser encontrado aqui:
http://dev.mysql.com/doc/refman/5.6/en/password-hashing.html