Acesse o banco de dados remoto mysql na linha de comando

190

Eu tenho um servidor com Rackspace. Eu quero acessar o banco de dados na minha linha de comando da máquina local.

Eu tentei assim:

mysql -u username -h my.application.com -ppassword

Mas dá um erro:

ERRO 2003 (HY000):

Não é possível conectar ao servidor MySQL em 'my.application.com' (10061)

O que causa esse erro e como posso me conectar ao banco de dados remoto?

user1986299
fonte
5
10061= Conexão recusada
Danny Beckett

Respostas:

289

Para efetuar login diretamente em um console mysql remoto, use o comando abaixo:

mysql -u {username} -p'{password}' \
    -h {remote server ip or name} -P {port} \
    -D {DB name}

Por exemplo

mysql -u root -p'root' \
        -h 127.0.0.1 -P 3306 \
        -D local

sem espaço após -p, conforme especificado na documentação

Ele o levará ao console do mysql diretamente, alternando para o banco de dados mencionado.

31-07-2019 - sintaxe editada

Venkat M
fonte
23
Eu tive que cercar a senha entre aspas simples. iemysql -u USERNAME -p'PASSWORD' -h REMOTE_SERVER_IP DB_NAME
Nick Brady
2
Para especificar o nome do banco de dados, precisamos adicionar -D. mysql -u {username} -p {password} -h {ip do servidor remoto} -D {DB name}
randeepsp
1
e se precisarmos especificar o PORT específico?
Serge
2
Não funcionou no Terminal no MacOS High Sierra Versão 10.13.3
realPK
9
não intervindo espaço após -p dev.mysql.com/doc/refman/8.0/en/command-line-options.html
Ivan Chau
33

edite o arquivo my.cnf:

vi /etc/my.cnf:

certifique-se de que:

bind-address=YOUR-SERVER-IP

e se você tiver a linha:

skip-networking

não deixe de comentar:

#skip-networking

não esqueça de reiniciar:

/etc/init.d/mysqld restart

alfasin
fonte
endereço de ligação = YOUR-SERVER-IP. aqui qual IP eu preciso mencionar é o IP do servidor remoto?
user1986299
@ user1986299 não, sua necessidade IP do seu servidor (não o remoto)
alfasin
1
você deve conceder a si mesmo o acesso ... Entrar seu DB do servidor local por mysql digitação e, em seguida:grant all privileges on *.* to 'root'@'%' identified by 'your-password'
alfasin
5
NUNCA conceda 'root' @ '%', esta é uma segurança enorme, não, não!
precisa saber é o seguinte
1
@ alfasin este é um pequeno ajuste com um impacto profundo, obrigado!
Christopher Schönfeldt
30

basta colocar isso no terminal no ubuntu:

mysql -u username -h host -p

Agora aperte enter

o terminal solicitará sua senha, digite a senha e você estará no servidor de banco de dados

Kedar Jangir
fonte
14

Tente este comando mysql -uuser -hhostname -PPORT -ppassword.

Eu enfrentei uma situação semelhante e, mais tarde, quando a porta mysql para host foi inserida com o comando, ela foi resolvida.

rajarajan2809
fonte
5
mysql -u testuser -h 192.168.**.* -P 3306 -p passwordfuncionou para mim
Mahebub A Sayyed 8/16
14

Para Mac, use o seguinte comando:

mysql -u app -h hostaddress -P port -D dbname -p

e digite a senha quando solicitado.

KayV
fonte
12

Se você não deseja usar o túnel ssh, em my.cnf ou mysqld.cnf, você deve alterar 127.0.0.1 com o seu endereço IP local ( 192.168.1.100 ) para ter acesso pela LAN. exemplo abaixo:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Procure pelo endereço de ligação em my.cnf ou mysqld.cnf

bind-address            =  127.0.0.1

e altere 127.0.0.1 para 192.168.1.100 (endereço IP local)

bind-address            =  192.168.1.100

Para aplicar a alteração que você fez, deve reiniciar o servidor mysql usando o próximo comando.

sudo /etc/init.d/mysql restart

Modifique a raiz do usuário para acesso à LAN (execute o fole da consulta no servidor remoto ao qual você deseja ter acesso)

root@192.168.1.100:~$ mysql -u root -p

..

CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Se você deseja ter acesso apenas a partir de um endereço IP específico, altere 'root' @ '%' para 'root' @ '(endereço IP ou nome do host)'

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Então você pode conectar:

nobus@xray:~$ mysql -h 192.168.1.100 -u root -p

testado no servidor ubuntu 18.04

Cornea Valentin
fonte
A melhor resposta! Obrigado
Nastro
6

Suponho que você tenha o MySQL instalado em sua máquina. Execute o comando abaixo após preencher os detalhes ausentes:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 
realPK
fonte
2

É necessário verificar se o acesso recebido à porta 3306 está bloqueado ou não pelo firewall.

Amirol Ahmad
fonte
Como posso verificar isso
Chandramouli Poreddy
2

Existe um comando simples.

mysql -h {hostip} -P {port} -u {username} -p {database}

Exemplo

mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb
Manish Goswami
fonte
{hostip} não irá adicionar qualquer tipo de detalhe porto como 192.10.10.26::45124
Manish Goswami
1

esta solução funcionou para mim:

Na sua máquina remota (exemplo: 295.13.12.53), você tem acesso à sua máquina remota de destino (que executa o servidor mysql)

ssh -f -L 295.13.12.53:3306:10.18.81.36:3306 user@295.13.12.53

Explicado:

ssh -f -L your_ssh_mashine_ipaddress:your_ssh_mashine_local_port:target_ipaddress:target_port user@your_ip_address -N

your_ssh_mashine_ipaddress - não é o endereço IP local, é o endereço IP para o qual você ssh, neste exemplo 295.13.12.53

your_ssh_mashine_local_port - esta é a porta customizada, não 22; neste exemplo, é 3306.

target_ipaddress - ip da máquina que você está tentando despejar no banco de dados.

target_port - 3306 é uma porta real para o servidor MySQL.

user @ your_ip_address - são credenciais ssh para o ssh mashine que você conecta

Feito tudo isso, volte para a sua máquina e faça o seguinte:

mysqldump -h 295.13.12.53 -P 3306 -u username -p db_name > dumped_db.sql

Irá pedir a senha, coloque sua senha e você está conectado. Espero que isto ajude.

violento
fonte
1

Tente isso, está funcionando:

mysql -h {nome do host} -u {nome de usuário} -p {senha} -N -e "{consulta a ser executada}"

Ravi Teja
fonte
0

Você deve colocar sua senha com 'p'

mysql -u root -u 1.1.1.1 -p'MyPass'
Karin Lahyani
fonte
0

Eu também estava recebendo o mesmo erro. Mas achou útil criar um novo usuário mysql no servidor mysql remoto e depois conectar-se. Execute o seguinte comando no servidor remoto:

CREATE USER 'openvani'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'localhost WITH GRANT 
OPTION;
CREATE USER 'openvani'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Agora você pode se conectar ao mysql remoto com o seguinte comando.

mysql -u openvani -h 'any ip address'-p

Aqui está o post completo:

http://openvani.com/blog/connect-remotely-mysql-server/

Davinder Snehi
fonte
0

servidores mysql geralmente são configurados para escutar apenas localhost (127.0.0.1), onde são usados ​​por aplicativos da web.

Se esse for o seu caso, mas você tiver acesso SSH ao seu servidor, poderá criar um túnel ssh e conectar-se através dele.

Na sua máquina local, crie o túnel.

ssh -L 3307:127.0.0.1:3306 -N $user@$remote_host

(este exemplo usa a porta local 3307, caso você também tenha o mysql em execução na sua máquina local e usando a porta padrão 3306)

Agora você deve ser cerveja para se conectar

mysql -u $user -p -h 127.0.0.1 -P 3307
mivk
fonte
0

Este funcionou para mim no mysql 8, substitua hostnamepelo seu hostname e port_numberpelo port_number, você também pode alterar o mysql_user se ele não for root

      mysql --host=host_name --port=port_number -u root -p

Mais informações aqui

levis
fonte
0

Se você estiver no Windows, tente o Visual Studio Code com plug-ins do MySQL, uma maneira fácil e integrada de acessar dados do MySQL em uma máquina Windows. E as tabelas de banco de dados listadas e podem executar quaisquer consultas personalizadas.

Cosmo Arun
fonte