Inicio Foros Bases de datos MySQL Insertar registro en tabla MySQL por comando desde otro equipo Linux

Viendo 5 entradas - de la 1 a la 5 (de un total de 5)
  • Autor
    Entradas
  • #44867
    Varios
    Moderador

    Hola, tengo un servidor con MySQL Server en Linux y tengo un segundo equipo también con MySQL Server y también Linux.

    Quisiera hacer un insert desde uno de los servidores MySQL en una base de datos del otro, es decir, quisiera saber si se puede ejecutar una consulta SQL (insert) en el servidor Linux 1 que ataque contra el servidor MySQL 2 ¿es posible?

    Uso en ambos Linux CentOS 7. En ambos no tengo modo gráfico, son Minimal y sólo dispongo de la línea de comandos.

    Para ser más específico, tengo en el servidor 1 un MySQL pero ahí no quiero hacer nada, solo ejecutar el comando que inserte un registro en el otro (servidor 2). Y en el servidor 2 tengo una base de datos llamada «facturacion», con una tabla llamada «facturas», desde el servidor 1 quiero insertar en esta tabla del servidor dos un registro, ejecutando esta consulta:

    insert into facturas (numero, cliente, importe) values (100,»Pepito Pérez», 1000);

    #44868
    alonsojpd
    Superadministrador

    Para ejecutar una consulta SQL desde un servidor Linux con MySQL y que se ejecute en otro servidor Linux con MySQL (puede ser cualquier otro sistema operativo), puedes usar el siguiente comando:

    mysql -h IP_SERVIDOR_MYSQL_EXTERNO -u NOMBRE_USUARIO -pCONTRASEÑA NOMBRE_BASE_DATOS -sN –port 3306 -e «insert into facturas (numero, cliente, importe) values (100,’Pepito Pérez’, 1000);»

    Donde cambiarás:

    • IP_SERVIDOR_MYSQL_EXTERNO: IP o nombre DNS del servidor MySQL al que te quieras conectar, da igual si está sobre Linux o Windows, lo importante es que este servidor externo tenga abierto el puerto de conexión de MySQL (por defecto el 3306) en su firewall.
    • NOMBRE_USUARIO: nombre de usuario de MySQL del servidor externo con permisos suficientes.
    • CONTRASEÑA: contraseña del usuario anterior.
    • NOMBRE_BASE_DATOS: nombre del catálogo (base de datos) a la que quieras conectarte. En tu caso «facturacion».
    • 3306: puerto de conexión que tenga establecido el serividor MySQL externo.
    • -e: en este parámetro, entre comillas dobles, pasaremos la consulta SQL que queramos ejecutar, sea un SELECT, un UPDATE, un CREATE o un INSERT.

    Si tienes en el servidor 1 de Linux MySQL tendrás el comando «mysql», por lo tanto podrás ejecutar el comando anterior sin problemas.

    #44869
    Varios
    Moderador

    Estupendo, entiendo el comando pero con el tema de las comillas dobles me lío un poco. En mi caso tengo que poner una consulta SQL así:

    insert into facturas (numero, cliente, importe) values (100,»Pepito Pérez», 1000);

    que lleva comillas dobles en «Pepito Pérez» y el propio comando engloba la sentencia SQL entre comillas dobles, por lo que me da error.

    #44870
    alonsojpd
    Superadministrador

    Así es, así te dará error, pero fíjate en el comando que hemos puesto de ejemplo:

    mysql -h IP_SERVIDOR_MYSQL_EXTERNO -u NOMBRE_USUARIO -pCONTRASEÑA NOMBRE_BASE_DATOS -sN –port 3306 -e «insert into facturas (numero, cliente, importe) values (100,’Pepito Pérez’, 1000);»

    Ahí el ‘Pepito Pérez’ va entre comillas simples y la sentencia SQL entre comillas dobles. Así está probado y funciona perfectamente.

    Aún así, si quieres poner siempre comillas dobles, puedes usar este comando:

    mysql -h IP_SERVIDOR_MYSQL_EXTERNO -u NOMBRE_USUARIO -pCONTRASEÑA NOMBRE_BASE_DATOS -sN –port 3306 -e «insert into facturas (numero, cliente, importe) values (100,\»Pepito Pérez\», 1000);»

    Ves que las comillas dobles del interior van con una contrabarra delante, del tipo \»Pepito Pérez\». Así también te funcionará.

     

    #44871
    Varios
    Moderador

    Perfecto, solucionado!!

    He usado al final las comillas simples en el interior para simplificar ¡resuelto!

    Muchas gracias.

Viendo 5 entradas - de la 1 a la 5 (de un total de 5)
  • Debes estar registrado para responder a este debate.