2013-08-05 1 views
4

Я уже написал файл php, который локально подключается к базе данных mysql. Теперь я хочу подключиться к удаленной базе данных через SSH. В настоящее время функция подключения к моей базе данных является следующим PHP:Подключиться к базе данных mysql через SSH через PHP

$this->db = new mysqli(_SERVR_URL, _SERVR_USER , _SERVR_PASS, _SERVR_DB); 
    if ($this->db->connect_errno) { 
     echo "Failed to connect to MySQL: (" . $this->db->connect_errno . ") " . $this->db->connect_error; 
    } 
    else{ 
     //echo "Successfully connected!! <BR><BR>"; 
    } 

Я хочу только изменить функцию (соединять выше), так что остальная часть коды все еще работает. Я успешно установил phpseclib и не заинтересован в установке расширений php ssh, потому что они не работали после почти 5 часов усилий. Phpseclib работает, и я думаю, это потому, что, когда я использую, он не умирает.

Однако, когда я пытаюсь начать работать с SSH вещи, он выдает ошибку сервера:

$ssh = new Net_SSH1(myURL); 

Путь, который я обычно SSH в мой сервер с файлом .pem. Могу ли я получить некоторые рекомендации по:

  1. Почему текущий код может быть ошибаться?
  2. Если это возможно.
  3. Как бы вы написали код соединения с файлом .pem.
+0

дублируют http://stackoverflow.com/questions/309615/connect-to-a-mysql-server-over-ssh-in -php – kwarunek

+1

Это не дубликат. Им не нужно было использовать файл .pem, и они не спрашивали конкретно о библиотеке phpseclib. – Lugubrious

ответ

4

I think you are out of luck on this one. You can either use the ssh extension in your PHP code, or if you have access to the server, you could try to create a ssh tunnel on the command-line.

You probably need special permissions to do that, though. It also looks like you don't have ssh access to this hosting account.

duplicate ответил @jpm

Setting up tunneling размещенные @ Олафур Вааге на Connect to a MySQL server over SSH in PHP

И this one для туннелирования по @Sosy

shell_exec(“ssh -f -L 3307:127.0.0.1:3306 [email protected] sleep 60 >> logfile”); 
$db = mysqli_connect(’127.0.0.1′, ‘sqluser’, ‘sqlpassword’, ‘rjmadmin’, 3307); 
+0

РЕДАКТИРОВАТЬ: только что увидел ваше редактирование. Спасибо за помощь в туннелировании - это действительно безопасно? – Lugubrious

+0

Однако он может создавать некоторые уязвимости, некоторые системные ошибки, которые не могут обрабатываться в php, это альтернативы по сравнению с усилиями против простоты – kwarunek

+0

Мой php-скрипт не будет создавать туннель ssh, но когда я сделаю это в терминале , код будет работать в течение указанного времени. Любая причина, почему это произойдет? – Lugubrious

1

расширение MySQL не в настоящее время поддерживают это. Модификация самого расширения может быть не такой сложной, но в этот момент в лучшем случае это должно быть обычное расширение PECL. Идея обсуждалась на PHP Internals рассылки списка некоторое время назад:

http://comments.gmane.org/gmane.comp.php.devel/79520