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

Как работает MySQL-соединение на удаленном сервере?

Когда я подключаюсь к своей базе данных MySQL локально, я использую:

$host = 'localhost';
$db = 'myDB';
$user = 'root';
$pass = '';

Когда мой сайт находится на удаленном сервере, я использую следующие параметры для подключения к MySQL:

$host = 'localhost';
$db = 'myDB';
$user = 'myUuserName';
$pass = 'myPAss';

Что странно, что я использую для обоих $ host = 'локальный'; и он работает также на удаленном сервере? Зачем? Как это возможно? Разве это не должно быть мое доменное имя вместо localhost?

localhost относится к тому месту, откуда выполняется файл. К вашему удаленному хосту он подключается к базе данных mysql на удаленной стороне. Это будет работать только в том случае, если у вас есть сервер mysql с обеих сторон, и оба настроены с одной и той же базой данных / данными.

Если у вас есть туннель (возможно, ssh), это может сработать. Ваш локальный конец туннеля будет прослушивать localhost (127.0.0.1) и скопирует соединение на удаленный сервер за вас. Более вероятно, что MySQL работает локально и вы подключаетесь к локальному серверу MySQL.

Для подключения к удаленному серверу используйте имя сервера или его IP-адрес в качестве хоста. Это будет работать, только если MySQL прослушивает интерфейс. Во многих системах MySQL прослушивает только интерфейс loopback (localhost). Вам нужно будет изменить адрес привязки в my.cnf на «0.0.0.0» с «127.0.0.1» и перезапустить базу данных.

В разрешениях в пользовательской таблице mysql может быть указан хост. Если ваш пользователь определен как «user @ localhost», вы не сможете подключиться с удаленного сервера. Чтобы включить удаленный доступ, его необходимо указать как «user @%» или «user @ remotehost».