Я выполнил обе команды через 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");
mysqli
конструктор принимает 5-й необязательный аргумент, определяющий порт. Вы должны использовать
$mysqli = new mysqli("127.0.0.1", "root", "root", "database_name", "3307");
вместо.
Вы проверили, что можете подключиться к порту с другого хоста? Mysql обычно использует сокет домена unix вместо порта (который также можно перенаправить).
ssh -fNg -L /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock root@server_ip