Eu instalei o servidor MySQL em uma máquina remota Ubuntu. O root
usuário é definido na mysql.user
tabela da seguinte maneira:
mysql> SELECT host, user, password FROM user WHERE user = 'root';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| localhost | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 127.0.0.1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ::1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
Eu posso acessar com o usuário root
da mesma interface de linha de comando da máquina remota usando o mysql
cliente padrão . Agora, quero permitir o acesso root de todos os hosts da Internet , então tentei adicionar a seguinte linha (é uma duplicata exata da primeira linha do despejo anterior, exceto a host
coluna):
mysql> SELECT host, user, password FROM user WHERE host = '%';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| % | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
Mas meu cliente no meu PC pessoal continua me dizendo (eu obscureci o IP do servidor):
Erro SQL (2003): Não é possível conectar ao servidor MySQL em '46 .xxx '(10061)
Não sei dizer se é um erro de autenticação ou de rede. No firewall do servidor , ativei a porta 3306 / TCP para 0.0.0.0/0 , e tudo bem para mim ...
fonte
bind-address
em my.cnfRespostas:
Há duas etapas nesse processo:
a) Conceder privilégios. Como usuário root, execute com isso substituindo
'password'
sua senha root atual:b) vincular a todos os endereços:
A maneira mais fácil é comentar a linha do seu
my.cnf
arquivo:e reinicie o mysql
Por padrão, ele se liga apenas ao localhost, mas se você comentar a linha, ele se liga a todas as interfaces que encontrar. Comentar a linha é equivalente a
bind-address=*
.Para verificar onde o serviço mysql foi ligado, execute como root:
Atualização para o Ubuntu 16:
O arquivo de configuração é (agora)
(pelo menos no Ubuntu 16 padrão)
fonte
USE mysql; UPDATE user SET Grant_priv='Y' WHERE user='root';
Execute a seguinte consulta:
use mysql;
update user set host='%' where host='localhost'
NOTA: Não recomendado para uso em produção.
fonte
update mysql.user set host='%' where user='root'
As vezes
deveria estar
fonte
MYSQL 8.0 - cliente de linha de comando mysql aberto
GRANT ALL PRIVILEGES ON *. * TO 'root' @ 'localhost';
use mysql
UPDATE mysql.user SET host = '%' WHERE usuário = 'root';
Reinicie o serviço mysql
fonte
MariaDB em execução no Raspbian - é difícil identificar o arquivo que contém o endereço de ligação. O MariaDB tem algumas informações não muito úteis sobre o assunto.
eu usei
para localizar onde está o maldito.
Eu também tive que definir os privilégios e hosts no mysql como todos acima apontaram.
E também me diverti bastante abrindo a porta 3306 para conexões remotas ao meu Raspberry Pi - finalmente usei o iptables-persistent .
Tudo funciona muito bem agora.
fonte
se você tiver muitas redes conectadas ao seu sistema operacional, deverá especificar uma dessas redes nos endereços de ligação do arquivo my.conf. um exemplo:
esse ip é de uma configuração ethX.
fonte
No meu caso, a configuração "endereço de ligação" foi o problema. Comentando essa configuração no
my.cnf
fez não ajuda, porque no meu caso mysql definir o padrão para 127.0.0.1 por algum motivo.Para verificar qual configuração o MySql está usando atualmente, abra a linha de comando na sua caixa local:
Leia a configuração atual:
Você deve ver 0.0.0.0 aqui se quiser permitir o acesso de todos os hosts. Se não for esse o caso, edite seu
/etc/mysql/my.cnf
e defina o endereço de ligação na seção [mysqld]:Por fim, reinicie o servidor MySql para pegar a nova configuração:
Tente novamente e verifique se a nova configuração foi selecionada.
fonte
mysql_update
é o que você precisa.Não sei por que alguém seguiria as formas mais complexas de corrigir esse problema, quando o MySql graciosamente construiu uma ferramenta que já faz isso ...
fonte