2009-11-13 7 views
0

Je dois me connecter à une base de données mysql distante en PHP.Connexion à la base de données PHP

Spécifiquement je l'ai comme une constante: define ("DATABASE_SERVER", "localhost"); ...

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

Je veux copier le site à ma machine locale, mais toujours se connecter à la base de données principale.

Puis-je faire ceci? si c'est le cas, comment? Tout ce que j'ai est un accès FTP.

+3

Le serveur distant mysql doit être configuré pour accepter les connexions à distance. Si vous n'avez pas accès à la configuration du serveur mysql, cela ne sera probablement pas possible. Êtes-vous sûr de ne pas avoir un cPanel ou une interface similaire sur votre compte d'hébergement? – jkndrkn

+0

Ce n'est pas mon compte d'hébergement. Je fais juste du travail sur le site; Je n'utilise pas beaucoup PHP ou mySQL. –

Répondre

3

Vous avez besoin de l'adresse IP/URL de la base de données et placez-la à la place de localhost.
Vous devez vous assurer que la configuration de la base de données permet des connexions à distance/en dehors du réseau local.
Une fois que vous obtenez l'adresse IP de la base de données (doit être donnée par l'équipe de support, si elle est prise en charge), vous saurez.

Si tout ce que vous avez à faire est de copier les données et de les construire localement sur votre machine, afin de ne pas détruire les données en direct, utilisez l'onglet export dans PHPmyadmin. Je suppose que vous n'avez pas trop de données. PHPmyadmin-> sélectionnez le DB (dans le cadre de gauche) -> appuyez sur le bouton d'exportation (en haut, cadre de droite).
Devrait être clair à partir de là.
Vous pouvez l'exporter en tant que SQL et exécuter ce SQL sur votre ordinateur local.

+0

N'y a-t-il aucun moyen d'obtenir l'IP/url par programme? –

+1

Oh, bien sûr. Utilisez simplement mysql_connect ("Special: //my.database", "vous savez, celui là-bas", "sur l'autre ordinateur"); PHP saura ce que tu veux dire. –

2

Je suppose que votre serveur de base de données refuse les connexions à distance. Si vous avez cPanel, il y a une section appelée quelque chose comme "Accès à la base de données à distance" où vous pouvez les activer pour certaines plages IP.

+0

devrais-je changer "localhost" à quelque chose d'autre en premier? Je ne sais pas à quoi le changer ou comment le comprendre. –

+0

@David - oui définitivement, si vous utilisez l'hébergement partagé, utilisez simplement le nom de domaine de votre site Web au lieu de localhost –

+0

Non, non, allez sur le changement de nom de domaine. –

2

Je vous suggère d'exporter la base de données en question et de l'importer localement. De cette façon, vous ne détruisez pas les données en direct si vous vous trompez.

De nombreux fournisseurs d'hébergement, sinon la plupart, fournissent également une interface de base de données telle que phpMyAdmin. Vous pouvez exporter la base de données à partir de là.

+0

Haha, j'aime ton idée. Mais je n'ai aucune idée de comment faire ça. Vous avez un lien? –

0

L'approche la plus simple est d'avoir DATABASE_SERVER être défini comme database (ou quelque chose d'équivalent) et de mettre une entrée dans votre fichier hosts. Sur votre machine locale, cela peut pointer vers l'adresse distante, sur le serveur, 127.0.0.1.

define('DATABASE_SERVER', database);

Sur les fenêtres de déposer vos sites est:

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

avec:

database <remote_ip>

Linux:

/etc/hosts

avec:

database 127.0.0.1

Side note: est votre télécommande DB une production DB? Si tel est le cas, vous ne devriez pas vraiment utiliser la base de données distante pour le développement, sauf si vous utilisez une base de données de développement séparée - même si je ne courrais pas le risque de voir des dev deviner les ressources distantes.

Mise à jour: Doh, manqué, vous êtes limité à l'accès FTP.

1

+1 gnud. Vous ne devriez pas utiliser la base de données de production pour le travail de développement, même si vous pouvez le configurer pour écouter l'accès externe sur une interface Internet publique (*). Un glissement de la souris et vous griffonnez des données importantes en direct. Au lieu de cela, vous devez travailler sur un serveur de développement autonome, à partir duquel vous pouvez envoyer les modifications de code au serveur en ligne lorsque vous travaillez et que vous testez.

(*: Ce qui est en soi une très mauvaise idée. Si les mots de passe sont trop faibles ou que vous utilisez une ancienne version de MySQL avec les exploits disponibles que vous allez obtenir piraté par des sondes automatiques très rapidement)

Vous devez normalement exporter la base de données à partir du shell à l'aide de la commande mysqldump dbname > dbdump.sql et l'importer sur votre serveur local en la redirigeant vers mysql dbname < dbdump.sql. Il pourrait également y avoir une interface web d'administration MySQL installée sur le serveur que vous pourriez utiliser. Mais si tout ce que vous avez est FTP, vous n'avez pas vraiment reçu les outils dont vous avez besoin pour faire le travail de développement. Voyez si vous pouvez obtenir une base de données vide ou factice pour tester le site.

(De plus, FTP est une sale affaire ... vraiment dans ce siècle, vous devriez utiliser SFTP.)

Questions connexes