У меня есть своя база данных по удаленной машине Linux, и я хочу соединить использование SSH и функции PHP (я в настоящее время пользуюсь ssh2 библиотекой для этого). Я пытался использовать mysql_connect, но он дает мне, не может получить доступ (хотя я дал разрешение), когда я пытался использовать эту функцию:
$connection = ssh2_connect('SERVER IP', 22);
ssh2_auth_password($connection, 'username', 'password');
$tunnel = ssh2_tunnel($connection, 'DESTINATION IP', 3307);
$db = mysqli_connect('127.0.0.1', 'DB_USERNAME', 'DB_PASSWORD',
'dbname', 3307, $tunnel)
or die ('Fail: '.mysql_error());
Я добрался, ошибка "mysqli_connect () ожидает, что параметр 6 будет строкой, данный ресурс". Как я могу разрешить это?
Согласно документы , тот последний параметр, как предполагается, является сокетом или именем канала, чем-то как '/var/run/mysql/mysql.sock'. Так как Вы не соединяете использование сокета UNIX, который не относится к Вам... так попытка просто пропуск его.
даже я попробовал его путем выполнения ssh и корневыми учетными данными и и общедоступная пара с закрытым ключом, но это позволяет мне соединяться через командную строку, но не через код php. Я попробовал путем создания туннеля также (при помощи функций ssh2), ответ, выполняющий команды оболочки из кода php (система, должностное лицо и т.д.), ничто не работало. Наконец я попробовал функцию ssh2 для выполнения команды оболочки, и она наконец работала :) Вот код, если он помогает you:----
$connection = ssh2_connect($remotehost, '22');
if (ssh2_auth_password($connection, $user,$pass)) {
echo "Authentication Successful!\n";
} else {
die('Authentication Failed...');
}
$stream=ssh2_exec($connection,'echo "select * from zingaya.users where id=\"1606\";" | mysql');
stream_set_blocking($stream, true);
while($line = fgets($stream)) {
flush();
echo $line."\n";
}
, он работал на меня, пробуют это, если хотят использовать функции php конкретно.