Inicio › Foros › Bases de datos › MySQL › Insertar registro en tabla MySQL por comando desde otro equipo Linux
Etiquetado: comando, consulta, ejecutar, externo, linux, mysql, otro, resuelto, servidor, solucionado, sql
- Este debate tiene 4 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 3 años, 5 meses por Varios.
-
AutorEntradas
-
10/21/2021 a las 14:25 #44867VariosModerador
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);
10/21/2021 a las 14:35 #44868alonsojpdSuperadministradorPara 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.
10/21/2021 a las 14:43 #44869VariosModeradorEstupendo, 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.
10/21/2021 a las 14:45 #44870alonsojpdSuperadministradorAsí 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á.
10/21/2021 a las 14:47 #44871VariosModeradorPerfecto, solucionado!!
He usado al final las comillas simples en el interior para simplificar ¡resuelto!
Muchas gracias.
-
AutorEntradas
- Debes estar registrado para responder a este debate.