Acesso da linha de comandos ao servidor MySQL remoto

0

Eu administro um site em um host remoto e compartilhado. Meu host oferece MySQL, e eu posso acessar isso do meu computador Mac OS X usando um programa GUI, Sequel Pro . Isso funciona muito bem.

Mas quero fazer o script de algumas consultas e o Sequel Pro não pode ser gerado por scripts. O que devo fazer?

Eu li sobre tunelamento para o mysql via SSH. Eu tenho acesso shell ao servidor, com uma chave SSH no meu Mac, então

ssh [email protected] -p 7978

me deixa entrar. Deve tunelar a porta do MySQL 3306 funcionar? Assim?

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

("expira" depois de um minuto.)

Eu preciso instalar o mysql no meu Mac?

    
por Jerry Krinock 29.05.2014 / 03:18

2 respostas

0

No servidor MySQL, você precisa modificar o arquivo my.cnf , cuja localização depende do SO: no Debian, ele está em / etc / mysql, por exemplo. Edite-o, encontre a linha

 [mysqld]

e adicione a ele o seguinte texto:

 [mysqld]
 user            = mysql
 pid-file        = /var/run/mysqld/mysqld.pid
 socket          = /var/run/mysqld/mysqld.sock
 port            = 3306
 basedir         = /usr
 datadir         = /var/lib/mysql
 tmpdir          = /tmp
 language        = /usr/share/mysql/English
 bind-address    = The_IP_of_YOUR_MySQL_Server
 # skip-networking

Aqui, o importante é que você comente a linha skip-networking e insira, na linha bind-address , o IP do servidor . Salve, reinicie o mysql (novamente, isso depende do SO), acesse o MySQL com o usual

  mysql -u root -p mysql

e permite o acesso do seu próprio IP remoto ao banco de dados existente:

  mysql> update db set Host='Your_own_remote_IP' where Db='webdb';
  mysql> update user set Host='Your_own_remote_IP' where user='webadmin';

Agora, volte ao seu sistema remoto e teste a nova funcionalidade:

 mysql -u webadmin –h The_IP_of_theMySQL_Server –p

Para que isso funcione, é claro, você precisa de um cliente MySQL no seu Mac. Agora você pode fazer o script de suas próprias consultas do MySQL, por exemplo, em um script bash da seguinte forma:

  #!/bin/bash

  result='mysql -h The_IP_of_theMySQL_Server --user=webadmin --password=Your_Password --skip-column-names -e "select id from mydb.mytable where myattribute = 3"'

EDITAR:

Isso é necessário se você quiser se conectar remotamente diretamente ao servidor MySQL. Se você quiser apenas fazer o script de suas consultas localmente ( isto é, , no servidor), então o cliente MySQL fará. Você pode encontrar uma introdução aqui .

    
por 29.05.2014 / 04:17
0

Usando o ssh, você pode executar comandos remotamente. Então, se você quiser fazer script de algumas consultas, essa é uma maneira de fazer isso. Talvez não o que você está procurando, mas uma opção para saber sobre

Digamos que o host B é seu servidor sql. host A é o cliente que você deseja executar suas consultas de

No host B, coloque suas consultas em arquivos, por exemplo, crie um arquivo "test.sql". No meu caso acabei de colocar "show databases"

Então do host A você pode fazer

ssh [opções] "[comando para executar]"

Configure o login sem senha com o ssh (usando a autenticação ssh-rsa). Usando "ssh-keygen" e "ssh-copy-id". Você pode testar isso fazendo

ssh [opções] "ls" e veja se retorna os resultados "ls" do host B

De lá você pode fazer

ssh [opções] "mysql [opções] < teste.sql"

Isso faz sentido?

Você também precisaria colocar uma senha no seu comando mysql, da qual você pode não ser fã, não muito seguro. Eu não experimentei outro login "sem senha" para o mysql, talvez haja outra maneira de fazer essa parte.

    
por 09.06.2014 / 19:37

Tags