MySQL 5.1.31 em execução no Windows XP.
No servidor MySQL local (192.168.233.142), eu posso conectar como root da seguinte maneira:
>mysql --host=192.168.233.142 --user=root --password=redacted
De uma máquina remota (192.168.233.163), posso ver que a porta mysql está aberta:
# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).
Mas ao tentar conectar ao mysql da máquina remota , recebo:
# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)
Eu tenho apenas 2 entradas no mysql.user:
Host User Password
--------------------------------------
localhost root *blahblahblah
% root [same as above]
O que mais preciso fazer para ativar o acesso remoto?
EDITAR
Conforme sugerido por Paulo abaixo, tentei substituir a entrada mysql.user por% por uma entrada específica de IP, então minha tabela de usuários agora fica assim:
Host User Password
------------------------------------------
localhost root *blahblahblah
192.168.233.163 root [same as above]
Reiniciei a máquina, mas o problema persiste.
PASSWORD
pela senha da conta. Eu tentei apenas a alteração acimaUSERNAME
eIP
não funcionou para mim até que eu mudeiPASSWORD
.Eu estava recebendo o mesmo erro depois de conceder acesso remoto até fazer isso:
De
/etc/mysql/my.cnf
Nas versões mais recentes do mysql, a localização do arquivo é
/etc/mysql/mysql.conf.d/mysqld.cnf
(comente esta linha
bind-address = 127.0.0.1
:)Então corra
service mysql restart
.fonte
bind-address
não funcionou para mim. De qualquerbind-address = 0.0.0.0
oubind-address = <server_ip>
obras.Por padrão, no servidor MySQL, o acesso remoto está desabilitado. O processo para fornecer um acesso remoto ao usuário é.
PATH
mysql -uroot -proot
(ou seja qual for a senha root).mysql>
Aqui, IP é o endereço IP para o qual você deseja permitir acesso remoto, se colocarmos
%
qualquer endereço IP que possa ser acessado remotamente.Exemplo:
Isto para um outro usuário.
Espero que isso ajude
fonte
0 rows affected
é a norma :) Além disso,service mysqld restart
é recomendado no final. [mysqld
Às vezes é apenasmysql
]A ajuda de Paulo me levou à solução. Foi uma combinação do seguinte:
O shell bash trata o cifrão como um caractere especial para expansão para uma variável de ambiente; portanto, precisamos escapar com uma barra invertida. Aliás, não precisamos fazer isso no caso em que o cifrão é o caractere final da senha.
Como exemplo, se sua senha for "pas $ word", no Linux bash, devemos conectar da seguinte forma:
fonte
mysql --host=192.168.233.142 --user=root --password='pas$word'
stackoverflow.com/a/6697781/500942Você tem um firewall ? verifique se a porta 3306 está aberta.
No Windows, por padrão, é criada uma conta root mysql que tem permissão para ter acesso apenas a partir do host local, a menos que você tenha selecionado a opção para ativar o acesso a partir de máquinas remotas durante a instalação.
criando ou atualize o usuário desejado com '%' como nome do host.
exemplo:
fonte
Tente
flush privileges
novamente.Tente reiniciar o servidor para recarregar as concessões.
Tente criar um usuário com o host "192.168.233.163". "%" parece não permitir tudo (é estranho)
fonte
CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION;
No meu caso, eu estava tentando conectar-se a um servidor mysql remoto no cent OS. Depois de passar por muitas soluções (concessão de todos os privilégios, remoção de ligações IP, ativação de rede), o problema ainda não estava sendo resolvido.
Como se viu, enquanto olhava para várias soluções, me deparei com iptables, o que me fez perceber que a porta 3306 do mysql não estava aceitando conexões.
Aqui está uma pequena nota sobre como eu verifiquei e resolvi esse problema.
Verificando se a porta está aceitando conexões:
telnet (ip do servidor mysql) [portNo]
Adicionando regra de tabela ip para permitir conexões na porta:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACEITAR
Não o recomendaria para o ambiente de produção, mas se suas tabelas de ip não estiverem configuradas corretamente, a adição de regras ainda poderá não resolver o problema. Nesse caso, deve ser feito o seguinte:
serviço iptables parar
Espero que isto ajude.
fonte
se você estiver usando ip dinâmico, conceda acesso a 192.168.2.%; agora, você não precisa se preocupar em conceder acesso ao seu endereço IP sempre.
fonte
Eu estava lutando com o login remoto no MYSQL para minha instância do Amazon EC2 Linux. A solução encontrada foi garantir que meu grupo de segurança incluísse uma regra de entrada para a porta 3306 do MySQL para incluir meu endereço IP (ou 0.0.0.0/0 para qualquer lugar). Imediatamente poderia conectar-se remotamente assim que adicionei esta regra.
fonte
O novo local para o arquivo de configuração do mysql é
fonte
O driver ODBC 3.51 do MySQL é que caracteres especiais na senha não são tratados.
"Aviso - Você pode ter uma forte dor de cabeça com o MySQL ODBC 3.51 se a senha do seu comando GRANT contiver caracteres especiais, como! @ # $% ^?. O Driver ODBC do MySQL ODBC 3.51 não suporta esses caracteres especiais na caixa de senha. A única mensagem de erro que você receberá é "Acesso negado" (usando a senha: SIM) "- de http://www.plaintutorials.com/install-and-create-mysql-odbc-connector-on-windows-7/
fonte
A combinação usuário / host pode ter sido criada sem senha.
Eu estava assumindo que, ao adicionar um novo host para um usuário existente (usando um aplicativo GUI), a senha existente também seria usada para a nova combinação usuário / host.
Eu poderia entrar com
localmente, mas não do IPADDRESS com
(Na verdade, eu poderia fazer login no IPADDRESS sem usar uma senha)
Definindo a senha de acesso permitido:
fonte
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
que me levou a este artigo: knowmysql.blogspot.com/2013/09/… Depois de seguir essas etapas, finalmente consegui me conectar ao servidor.