Когда я подключаюсь к своей базе данных 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».