Acceda a la base de datos remota mysql desde la línea de comandos

190

Tengo un servidor con Rackspace. Quiero acceder a la base de datos desde la línea de comando de mi máquina local.

Intenté como:

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

Pero da un error:

ERROR 2003 (HY000):

No se puede conectar al servidor MySQL en 'my.application.com' (10061)

¿Qué causa este error y cómo puedo conectarme a la base de datos remota?

usuario1986299
fuente
55
10061= Conexión rechazada
Danny Beckett

Respuestas:

294

Para iniciar sesión directamente en una consola mysql remota, use el siguiente comando:

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

Por ejemplo

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

sin espacio después de -p como se especifica en la documentación

Te llevará directamente a la consola mysql al cambiar a la base de datos mencionada.

31-07-2019 - sintaxis editada

Venkat M
fuente
23
Tuve que rodear la contraseña entre comillas simples. es decirmysql -u USERNAME -p'PASSWORD' -h REMOTE_SERVER_IP DB_NAME
Nick Brady
2
Para especificar el nombre de la base de datos necesitamos agregar -D. mysql -u {nombre de usuario} -p {contraseña} -h {IP del servidor remoto} -D {nombre de la base de datos}
randeepsp
1
¿Qué pasa si necesitamos especificar el PUERTO específico?
Serge
2
No funcionó en Terminal en MacOS High Sierra Versión 10.13.3
realPK
9
sin espacio intermedio después de -p dev.mysql.com/doc/refman/8.0/en/command-line-options.html
Ivan Chau
33

edite el archivo my.cnf:

vi /etc/my.cnf:

Asegúrate de eso:

bind-address=YOUR-SERVER-IP

y si tienes la línea:

skip-networking

asegúrate de comentarlo:

#skip-networking

no olvides reiniciar:

/etc/init.d/mysqld restart

alfasin
fuente
dirección-enlace = SU-SERVIDOR-IP. Aquí, ¿qué IP debo mencionar es IP de servidor remoto?
user1986299
@ user1986299 no, necesita la IP de su servidor (no el control remoto)
alfasin
1
debe otorgarse acceso ... inicie sesión en su base de datos desde el servidor local escribiendo mysql y luego:grant all privileges on *.* to 'root'@'%' identified by 'your-password'
alfasin
55
NUNCA otorgue 'root' @ '%' esta es una gran seguridad, no, no!
josh123a123
1
@alfasin este es un pequeño ajuste con un profundo impacto, ¡gracias!
Christopher Schönfeldt
30

simplemente ponga esto en la terminal en ubuntu:

mysql -u username -h host -p

Ahora presiona enter

el terminal le pedirá contraseña, ingrese la contraseña y estará en el servidor de la base

Kedar Jangir
fuente
14

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

Me enfrenté a una situación similar y luego, cuando se ingresó el puerto mysql para host con el comando, se resolvió.

rajarajan2809
fuente
55
mysql -u testuser -h 192.168.**.* -P 3306 -p passwordfuncionó para mí
Mahebub A Sayyed
14

Para Mac, use el siguiente comando:

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

y luego ingrese la contraseña cuando se le solicite.

KayV
fuente
12

Si no desea utilizar el túnel ssh, en my.cnf o mysqld.cnf debe cambiar 127.0.0.1 con su dirección IP local ( 192.168.1.100 ) para tener acceso a través de Lan. ejemplo abajo:

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

Busque la dirección de enlace en my.cnf o mysqld.cnf

bind-address            =  127.0.0.1

y cambie 127.0.0.1 a 192.168.1.100 (dirección IP local)

bind-address            =  192.168.1.100

Para aplicar el cambio que realizó, debe reiniciar el servidor mysql con el siguiente comando.

sudo /etc/init.d/mysql restart

Modifique la raíz del usuario para el acceso LAN (ejecute la consulta a continuación en el servidor remoto al que desea tener acceso)

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;

Si desea tener acceso solo desde una dirección IP específica, cambie 'root' @ '%' a 'root' @ '(dirección IP o nombre de 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;

Entonces puedes conectarte:

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

probado en el servidor ubuntu 18.04

Córnea Valentin
fuente
La mejor respuesta! Gracias
Nastro
6

Supongo que tiene MySQL instalado en su máquina. Ejecute el siguiente comando después de completar los detalles que faltan:

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

Debe verificar si el acceso entrante al puerto 3306 está bloqueado o no por el firewall.

Amirol Ahmad
fuente
¿Cómo puedo verificar esto
ChandraMouli Poreddy
2

Hay un comando simple.

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

Ejemplo

mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb
Goswami Manish
fuente
{hostip} no agregará ningún tipo de detalle de puerto como 192.10.10.26::45124
Manish Goswami
1

esta solución me funcionó:

En su máquina remota (ejemplo: 295.13.12.53) tiene acceso a su máquina remota de destino (que ejecuta el 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: no es la dirección IP local, es la dirección IP a la que ssh, en este ejemplo 295.13.12.53

your_ssh_mashine_local_port -este es un puerto personalizado no 22, en este ejemplo es 3306.

target_ipaddress: ip de la máquina que intenta volcar DB.

target_port - 3306 este es el puerto real para el servidor MySQL.

user @ your_ip_address: estas son las credenciales ssh para ssh mashine que conecta

Una vez hecho todo esto, vuelva a su máquina y haga esto:

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

Solicitará contraseña, ingrese su contraseña y estará conectado. Espero que esto ayude.

violentr
fuente
1

Prueba esto, está funcionando:

mysql -h {hostname} -u {nombre de usuario} -p {contraseña} -N -e "{consulta para ejecutar}"

ravi teja
fuente
0

Deberías poner tu contraseña con 'p'

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

También estaba recibiendo el mismo error. Pero lo encontré útil al crear un nuevo usuario de mysql en el servidor remoto de mysql y luego conectar. Ejecute el siguiente comando en el 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;

Ahora puede conectarse con mysql remoto con el siguiente comando.

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

Aquí está la publicación completa:

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

Davinder Snehi
fuente
0

Los servidores mysql generalmente están configurados para escuchar solo localhost (127.0.0.1), donde las usan las aplicaciones web.

Si ese es su caso, pero tiene acceso SSH a su servidor, puede crear un túnel ssh y conectarse a través de él.

En su máquina local, cree el túnel.

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

(este ejemplo usa el puerto local 3307, en caso de que también tenga mysql ejecutándose en su máquina local y usando el puerto estándar 3306)

Ahora deberías ser ale para conectarte

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

Este funcionó para mí en mysql 8, reemplácelo hostnamecon su nombre de host y port_numbercon su número_puerto, también puede cambiar su mysql_user si no es root

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

Más información aquí

levis
fuente
0

Si está en Windows, pruebe el Código de Visual Studio con complementos de MySQL, una forma fácil e integrada de acceder a los datos de MySQL en una máquina con Windows. Y las tablas de la base de datos enumeradas y pueden ejecutar cualquier consulta personalizada.

Cosmo Arun
fuente