Я управляю веб-сайтом на удаленном общем хосте. Мой веб-хостинг предлагает MySQL, и я могу получить к нему доступ с моего компьютера Mac OS X с помощью программы с графическим интерфейсом Sequel Pro. Это прекрасно работает.

Но я хочу написать несколько запросов, а Sequel Pro не поддерживает сценарии. Что я должен делать?

Я читал о туннелировании в MySQL через SSH. У меня есть доступ оболочки к серверу, с ключом SSH на моем Mac, так

ssh jerrykri@123.456.789.123 -p 7978

получает меня. Должно ли работать туннелирование порта MySQL 3306? Как это?

ssh jerrykri@123.456.789.123 -L 3306:127.0.0.1:3306

(Это "истекает" через минуту.)

Нужно ли устанавливать MySQL на моем Mac?

2 ответа2

0

Используя ssh, вы можете запускать команды удаленно. Так что если вы хотите написать несколько запросов, это один из способов сделать это. Может быть, не то, что вы ищете, а возможность узнать о

Допустим, хост B является вашим сервером sql. хост A - это клиент, с которого вы хотите выполнить ваши запросы

На хосте B разместите свои запросы в файлах, например, создайте файл «test.sql». В моем случае я просто поставил "Показать базы данных"

Затем с хоста А вы можете сделать

ssh [опции] "[команда для запуска]"

Настройте логин без пароля с помощью ssh (используя аутентификацию ssh-rsa). Использование "ssh-keygen" и "ssh-copy-id". Вы можете проверить это тогда

ssh [options] "ls" и посмотреть, возвращает ли "ls" результаты хоста B

Оттуда вы можете сделать

ssh [параметры] "mysql [параметры] <test.sql"

Имеет ли это смысл?

Вам также нужно будет ввести пароль для вашей команды mysql, который вы, возможно, не фанат, и не очень безопасный. Я не экспериментировал с другими "парольными" входами в mysql, возможно, есть другой способ сделать эту часть.

0

На сервере MySQL вам нужно изменить файл my.cnf, расположение которого зависит от ОС: в Debian, например, он находится в /etc /mysql. Отредактируйте его, найдите строку

 [mysqld]

и добавить к нему следующий текст:

 [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

Здесь важно, чтобы вы закомментировали пропущенную сеть и вставили в адрес привязки строки IP -адрес сервера. Сохранить, перезапустить mysql (опять же, это зависит от ОС), получить доступ к MySQL с помощью обычного

  mysql -u root -p mysql

и разрешить доступ с вашего удаленного IP к существующей базе данных:

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

Теперь вернитесь к удаленной системе и протестируйте новые функции:

 mysql -u webadmin –h The_IP_of_theMySQL_Server –p

Конечно, чтобы это работало, вам нужен клиент MySQL на вашем Mac. Теперь вы можете создавать собственные запросы MySQL, например, в bash-скрипте следующим образом:

  #!/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"`

РЕДАКТИРОВАТЬ:

Это необходимо, если вы хотите удаленно подключиться к серверу MySQL. Если вы просто хотите написать свои запросы локально (то есть на сервере), тогда подойдет клиент MySQL . Вы можете найти введение здесь .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .