
Estoy intentando ejecutar una MySQL
consulta ssh
usando el siguiente comando:
ssh -p 2020 [email protected] "mysql --verbose --compress --secure-auth --database ops --execute \
'INSERT INTO \`ops\`.\`accounts\` (\`alias\`, \`id\`, \`web_server\`, \`mysql_server\`) VALUES ('foobar', 'foobar', 'web2', 'mysql1')'"
El problema es que cuando se ejecuta esto, se eliminan las comillas simples alrededor de foobar
, foobar
, web2
y . mysql1
Aquí está la respuesta de error de MySQL:
ERROR 1054 (42S22) at line 1: Unknown column 'foobar' in 'field list'
--------------
INSERT INTO `ops`.`accounts` (`alias`, `id`, `web_server`, `mysql_server`) VALUES (foobar, foobar, web2, mysql1)
--------------
¿Cómo puedo arreglar esto? Gracias.
Respuesta1
La solución fue agregar otra capa de comillas simples escapadas alrededor de los valores.
ssh -p 2020 [email protected] "mysql --verbose --compress --secure-auth --database ops --execute \
'INSERT INTO \`ops\`.\`accounts\` (\`alias\`, \`id\`, \`web_server\`, \`mysql_server\`) VALUES ('\'foobar\'', '\'foobar\'', '\'web2\'', '\'mysql1\'')'"
Respuesta2
Lo siguiente debería funcionar:
echo "INSERT INTO `ops`.`accounts` (`alias`, `id`, `web_server`, `mysql_server`) VALUES ('foobar', 'foobar', 'web2', 'mysql1')" | ssh [email protected] "mysql --verbose --compress --secure-auth --database ops"
También puedes reenviar un puerto local a tu servidor remoto:
$ ssh -L2206:localhost:3306 [email protected]
Luego, en otra terminal, podrás conectar tu servidor MySQL remoto usando el mysql
comando:
$ mysql --host localhost --port 2206