Подключение к базе данных PHP - PullRequest
0 голосов
/ 13 ноября 2009

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

Конкретно у меня есть это как константа: define ("DATABASE_SERVER", "localhost"); ...

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

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

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

Ответы [ 5 ]

3 голосов
/ 13 ноября 2009

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

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

2 голосов
/ 13 ноября 2009

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

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

2 голосов
/ 13 ноября 2009

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

1 голос
/ 13 ноября 2009

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

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

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

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

0 голосов
/ 13 ноября 2009

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

define('DATABASE_SERVER', database);

В Windows файл вашего сайта:

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

с:

database <remote_ip>

Linux:

/etc/hosts

с:

database 127.0.0.1

Примечание: ваша удаленная БД - рабочая БД? В таком случае вам не следует использовать удаленную БД для разработки, если только вы не используете отдельную dev-базу - даже тогда я бы не стал рисковать мошенническими dev-запросами, поглощающими ресурсы удаленной DB.

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

...