Conexão remota do MySQL - Acesso negado para o usuário 'username' @ 'localhost' (usando a senha: YES)

3

Estou configurando uma conexão remota com um servidor MySQL, mas não importa o que eu tente, estou recebendo o erro de acesso negado do servidor remoto.

Eu adicionei o usuário por:

CREATE USER 'username'@'REMOTE_IP_ADDRESS' IDENTIFIED BY '***';

Então eu dei permissões:

GRANT ALL PRIVILEGES ON databasename.* to username@REMOTE_IP_ADDRESS;

Minha tabela de usuários no servidor MySQL mostra (entre outras coisas):

+---------------+--------------------+
| user          | host               |
+---------------+--------------------+
| username      | REMOTE_IP_ADDRESS  |
+---------------+--------------------+

Se eu mostrar concessões para o usuário, obtenho:

+------------------------------------------------------------------------------------+
| Grants for username@REMOTE_IP_ADDRESS
+------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'REMOTE_IP_ADDRESS' IDENTIFIED BY PASSWORD '***'
| GRANT ALL PRIVILEGES ON 'databasename'.* TO 'username'@'REMOTE_IP_ADDRESS'
+------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

No servidor remoto, eu uso:

mysql -u username -p DB_SERVER_IP

e receba a mensagem de erro:

ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)

Eu fiz "privilégios de flush", mas eu ainda não consigo me conectar - notei que o erro é username @ localhost e eu não tenho nenhuma permissão configurada para username @ localhost, mas eu nunca tive que fazer isso antes. Eu tenho algumas outras contas remotas no mesmo servidor e nenhuma delas tem @localhost, pois elas só se conectam localmente.

O que estou perdendo? Eu esqueci de fazer algo ou o que mais posso verificar?

    
por bhttoan 15.08.2014 / 15:48

4 respostas

3

A mensagem de erro indica que você não está se conectando ao MySQL remoto, mas ao localhost. Certifique-se de conectar-se usando a opção -h ao servidor remoto.

mysql -u username -h DB_SERVER_IP

    
por 15.08.2014 / 15:55
0

Por simplicidade, digamos assim:

Computador A = Mantém o banco de dados MySQL. IPv4 = 192.168.11.1

Computador B = Tem um programa Eclipse que deseja se conectar ao Computador A e fazer coisas com os esquemas. Ipv4 = 192.168.22.2

Faça o seguinte no computador A:

Parece que você está tentando criar um novo usuário com o nome 'username'@'192.168.22.2', mas um usuário diferente com o nome 'username' @ 'localhost' está atrapalhando / recebendo precedência.

Faça este comando para ver os usuários:

SELECT user,host FROM mysql.user;

Você deve ver duas entradas:

1) usuário = nome de usuário, host = localhost

2) user = username, host = 192.168.22.2

Então, faça estes comandos:

DROP User 'username'@'localhost';
DROP User 'username'@'192.168.22.2';

Note que, se vir o utilizador 'username' @ '%', também elimine / apague essa linha.

Reinicie o MySQL Workbench

Em seguida, faça seus comandos originais novamente:

CREATE USER 'username'@'192.168.22.2' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'192.168.22.2';

Eu não entendo porque você usou "***" como sua senha, então eu a substitui por "senha".

Em seguida, vá para o Computador B e abra o seu prompt de comando / terminal. Digite o seguinte e você deve estar conectado ao Computador A. Se não conseguir se conectar, verifique as regras de entrada do firewall do Computador A e verifique se o Serviço MySQL está sendo executado no Computador A.

mysql --host=192.168.11.1 --user=username --password=password

(Certifique-se de ter a configuração do mysql como uma variável ambiental, caso contrário, o Prompt de Comando não entenderá o comando "mysql")

Métodos de solução de problemas úteis: Desative todas as regras de firewall no computador A. No prompt de comando / terminal do computador B, faça "ping 192.168.11.1" ou "telnet 192.168.11.1 3306".

    
por 19.05.2017 / 03:54
-1

Você precisará adicionar o usuário localhost separadamente. Você pode fazer isso em um comando (em vez de dois).

GRANT ALL on database.* to 'user'@'localhost' identified by 'paswword';

Se você quiser adicionar o usuário para que ele possa se conectar de qualquer lugar (menos seguro), use este:

GRANT ALL on database.* to 'user'@'%' identified by 'password';
    
por 15.08.2014 / 16:22
-1

TIP:

comentar pid e arquivo de soquete, se você não pode se conectar ao servidor o mysql pode estar se conectando com arquivo pid e / ou soquete incorreto, Então, quando você tenta se conectar ao servidor através da linha de comando "olha" no arquivo pid / socket incorreto ...

### comment out pid and socket file, if you can't connect to server..
#pid-file=/var/run/mysql/mysqld.pid #socket=/var/lib/mysql/mysql.sock
    
por 27.05.2017 / 09:43

Tags