Назад | Перейти на главную страницу

php не может подключиться к MySQL через туннель SSH

Я выполнил обе команды через SSH без ошибок, а затем, когда я пытаюсь подключиться к серверу MySQL через SSH-туннель, я не получаю результатов, даже если я выполняю простой запрос, например select * from table.

Я не получаю ошибок, когда открываю php-скрипт на живом сайте.

Я получаю такую ​​ошибку: mysqli::mysqli(): (HY000/2002): Operation timed out когда я получаю доступ к локально размещенному сценарию php.

Оба они, конечно же, подключаются к удаленному серверу MySQL. У меня локально установлены Apache и MySQL, если это что-то изменит.

Все работает нормально, когда я подключаюсь через MySQL workbench.

Я также прокомментировал эту строку в my.cnf: #bind-address = 127.0.0.1

ssh -fNg -L 3307:127.0.0.1:3306 root@server_ip

mysql -h 127.0.0.1 -P 3307 -u root -p database_name

// php

$mysqli = new mysqli("127.0.0.1:3307", "root", "root", "database_name");
  1. mysqli конструктор принимает 5-й необязательный аргумент, определяющий порт. Вы должны использовать

    $mysqli = new mysqli("127.0.0.1", "root", "root", "database_name", "3307");
    

вместо.

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

    ssh -fNg -L /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock root@server_ip