Estou tentando me conectar a um banco de dados MySQL remoto para replicação.
O banco de dados está em uma máquina que faz parte de uma rede segura, portanto, depois de abrir a segurança o suficiente para permitir o acesso do meu destino de replicação à porta 3306, eu queria me conectar através da ferramenta CLI para verificar a conexão.
No entanto, não importa como eu tente me conectar, recebo a seguinte resposta:
ERROR 1045 (28000): Access denied for user '{user}'@'{IP}' (using password: NO)
Apesar do que esta mensagem diz, o usuário com quem estou tentando me conectar tem uma senha definida e eu a forneço para a CLI.
Tentei passar a senha de forma interativa, inline e por meio de um arquivo .cnf
Verifiquei se a senha está correta e se espera que o usuário venha do endereço IP da máquina que hospeda o destino da replicação.
Alterei as permissões do usuário para ALL caso houvesse uma permissão negando acesso.
Certifiquei-me de que o servidor de destino da replicação não tenha nenhum usuário que possa fazer login com uma senha, caso isso esteja afetando o comportamento padrão.
Nenhum deles mudou o comportamento e, infelizmente, os únicos recursos que posso encontrar on-line são como fazer login se alguém esqueceu a senha de root ou como definir a senha de root após fazer uma nova instalação.
EDIT: Estes são os comandos que usei para tentar passar a senha para a CLI:
Interactively:
mysql --host={destination IP} --protocol=tcp -u remote_user -p
Inline:
mysql --host={destination IP} --protocol=tcp -u remote_user -p{password}
mysql --host={destination IP} --protocol=tcp --user=remote_user --password={password}
Configuration file:
(Config file {user}@{host}.cnf)
[client]
host={host}
user={user}
password={password}
protocol=tcp
(Command)
mysql --defaults-extra-file=/{user}@{host}.cnf
EDIT 2: A user
tabela do banco de dados ao qual pretendo me conectar contém esta linha relevante:
| Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections |
| {-IP address-} | azure_user | {-password_hash-} | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 |
Infelizmente, este banco de dados está executando o MySQL v.5.1 e, portanto, não contém todos os campos solicitados. As informações de identificação foram removidas, mas o IP está correto para a máquina da qual estou tentando acessar o banco de dados, assim como o nome de usuário. O hash da senha foi definido usando ALTER USER 'azure_user'@'{-IP address-}' IDENTIFIED BY '{password}'
.
A origem desse problema foram versões muito diferentes do MySQL.
O servidor remoto estava usando o MySQL versão 5.1.73 e o cliente do qual eu estava tentando fazer login estava usando a versão 8.0.35. Depois de fazer o downgrade do cliente para 5.5, consegui fazer login sem nenhum problema.
Obrigado a @Damien-Layershift por trazer à tona sua experiência com versões de cliente incompatíveis!