Вопрос

Мне нужно подключиться к удаленной базе данных mysql на PHP.

В частности, у меня это как константа:определить("DATABASE_SERVER", "localhost");...

$db = @mysql_connect(DB_SERVER, DB_USER, DB_PASS);

Я хочу скопировать сайт на свой локальный компьютер, но по-прежнему подключаться к основной базе данных.

Могу ли я это сделать?если да, то каким образом?Все, что у меня есть, - это доступ по FTP.

Это было полезно?

Решение

Вам нужен IP / URL базы данных и укажите его вместо localhost.
Вам необходимо убедиться, что конфигурация базы данных допускает удаленные подключения / вне локальной сети.
Как только вы получите IP-адрес базы данных (должен быть предоставлен службой поддержки, если она поддерживается), вы будете знать.

Если все, что вам нужно сделать, это скопировать данные и создать их локально на вашем компьютере, чтобы не уничтожать текущие данные, воспользуйтесь вкладкой экспорт в phpMyAdmin.Я предполагаю, что у вас не слишком много данных.
phpMyAdmin-> выберите базу данных (в левой рамке)-> перейдите на вкладку экспорт (верхняя, правая рамка).
Оттуда должно быть ясно.
Вы можете экспортировать его как SQL и запустить этот SQL на своем локальном компьютере.

Другие советы

Я бы предположил, что ваш сервер базы данных отказывается от удаленных подключений.Если у вас есть cPanel, там есть раздел, называемый что-то вроде "Удаленный доступ к базе данных", где вы можете включить их для определенных диапазонов IP.

Я предлагаю вам экспортировать базу данных, о которой идет речь, и импортировать ее локально.Таким образом, вы не уничтожите текущие данные, если напортачите.

Многие, если не большинство, хостинг-провайдеры также предоставляют интерфейс БД, такой как phpMyAdmin.Оттуда вы можете экспортировать базу данных.

+1 гнуд.Вам не следует использовать производственную базу данных для разработки, даже если вы мог бы настройте его на прослушивание внешнего доступа через общедоступный интернет-интерфейс (*).Одно движение мыши, и вы просматриваете важные оперативные данные.Вместо этого вы должны работать на своем собственном автономном сервере разработки, с которого вы можете отправлять изменения кода на текущий сервер, когда они работают и тестируются.

(*:Что само по себе является очень плохой идеей:если пароли слишком слабые или вы используете старую версию MySQL с доступными эксплойтами, вас очень быстро взломают автоматические проверки.)

Обычно вы экспортируете базу данных из командной оболочки, используя mysqldump dbname > dbdump.sql команду и импортируйте ее на свой локальный сервер, передав в mysql dbname < dbdump.sql.На сервере, который вы могли бы использовать, также может быть установлен веб-интерфейс администратора MySQL.Но если все, что у вас есть, - это FTP, то на самом деле вам не дали инструментов, необходимых для выполнения работ по разработке.Посмотрите, можете ли вы получить пустую или фиктивную базу данных для тестирования сайта.

(Более того, FTP - это неприятное занятие...действительно, в этом столетии вы должны использовать SFTP.)

Самый простой подход состоит в том, чтобы иметь DATABASE_SERVER быть определенным как database (или что-то столь же значимое) и поместите запись в ваш файл hosts.На вашем локальном компьютере это может указывать на удаленный адрес, на сервере это будет указывать на 127.0.0.1.

define('DATABASE_SERVER', database);

В Windows ваш файл sites является:

c:\windows\system32\drivers\etc\hosts

с:

database <remote_ip>

Linux:

/etc/hosts

с:

database 127.0.0.1

Боковое примечание:является ли ваша удаленная база данных производственной базой данных?Если это так, вам действительно не следует использовать удаленную базу данных для разработки, если только вы не используете отдельную базу данных разработчиков - даже тогда я бы не стал рисковать тем, что мошеннические запросы разработчиков поглотят ресурсы удаленной базы данных.

Обновить: Дох, пропустил, что ты ограничен доступом по FTP.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top