Это мой первый пост, надеюсь, вы мне поможете.
То, что я пытаюсь сделать, это подключиться через обратный SSH к удаленному серверу компании.
COMPANY $ ssh -R 36060:localhost:22 [email protected]
Тогда в местном
LOCAL $ ssh company@localhost -p 36060
LOCAL $ mysql -h 127.0.0.1 -u root -p root
Все хорошо, соединение работает в терминале, я вижу таблицы, никаких проблем.
После всего этого в php архиве.
<?php
$cnn = mysqli_connect('127.0.0.1','root','root','user_database',33060);
?>
Но всегда присылайте мне ошибки, когда я пытаюсь открыть в браузере.
Warning: Packets out of order. Expected 0 received 45. Packet size=4739923 in /opt/lampp/htdocs/test.php on line 2
Warning: mysqli_connect(): MySQL server has gone away in /opt/lampp/htdocs/test.php on line 2
Я пытаюсь изменить конфиг в «тестовом сервере», изменить в LOCAL и COMPANY max_allowed_packet = 128M в my.cf, но ничего не работает.
Если у вас есть идеи, пожалуйста, помогите 🙁
РЕДАКТИРОВАТЬ: проблема решена!
SERVER $ ssh -fNT -R 33060: localhost: 3306 [email protected]
LOCAL $ mysql -h 127.0.0.1 -P 33060 -u root -p
И работает отлично: D
Вот мой PHP-скрипт, который подключается.
Убедитесь, что сначала добавили ваш открытый ключ ssh к авторизованным ключам на удаленном сервере.
shell_exec("ssh -f -L 3307:localhost:3306 myuser@myhost sleep 10 >> logfile");
$DB = new PDO("mysql:host=$servername_local;dbname=$dbname_local;port=3307", $username_local, $password_local);
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Других решений пока нет …