2012-03-30 15 views
5

Tengo un servidor CentOS que quiero script de BASH corriendo en mi computadora portátil.scripting MySQL desde BASH a través de SSH

ejecutar un script que localmente: - se registra en el servidor a través de SSH y ejecuta algunas declaraciones MySQL - copia archivos que necesito a donde ellos

necesitamos la copia de archivos es fácil. Yo puedo hacer eso.

Pero, ¿cómo se puede conectar a un servidor MySQL a través del puerto SSH y ejecutar instrucciones? Creo que estoy atascado en la parte de conexión. ejecutando los enunciados puedo construir en una variable y ejecución por lotes.

Tengo un par de llaves SSH pub/priv desde mi computadora portátil a este servidor también.

¿Alguna ayuda?

+0

Es esto lo ¿estas buscando? http://www.wallpaperama.com/forums/_zwxwzy.html – mikevoermans

Respuesta

5

simplemente use ssh para ejecutar mysql en el servidor remoto. Por ejemplo

ssh [email protected] 'mysql -uimauser -p imadb -e "select * from table"'.

Todo en comillas se ejecutará de forma remota por ssh.

9

Puede especificar comandos para ejecutar en la máquina remota, como el último argumento de ssh:

ssh [email protected] 'mysql -u user ...' 

El problema con esto es que va a ser una molestia para hacer frente a los diferentes '" escapar de la . comando (s) MySQL

una mejor manera, en mi opinión, es abrir un túnel SSH a la máquina remota cuando se conecta:

ssh -L 12341:127.0.0.1:3306 [email protected] & 

esto sería conectar el puerto local 12341, t o el puerto 3306 (mysqld) de la máquina remota. Después se realiza la conexión, puede conectarse a él desde su máquina local como:

mysql -h 127.0.0.1 -p 12341 

para que pueda colocar las sentencias SQL en un archivo, y el gato en mysql:

cat commands | mysql -h 127.0.0.1 -p 12341 

Don' olvide matar la conexión SSH después de que haya terminado.

Tenga en cuenta que la tunelización requiere que el servidor remoto tenga PermitTunnel "sí" en su sshd_config.

5

Usted puede hacer lo que dijo @WishCow o puede poner todas las declaraciones de MySQL en un archivo .sql, copiar este archivo en el servidor y luego llamar a MySQL para ejecutar estas declaraciones, algo como esto:

echo "show databases;" > test.sql 
echo "use some_database;" >> test.sql 
echo "show tables;" >> test.sql 
scp test.sql [email protected]: 
ssh [email protected] 'mysql -u mysql-user -pmysql-pass < test.sql' 
Cuestiones relacionadas