Comment accéder au serveur distant avec le client phpMyAdmin local?

134

En supposant qu'il existe un serveur distant et que le client phpMyAdmin est installé localement sur mon ordinateur. Comment puis-je accéder à ce serveur et le gérer via le client phpMyAdmin? Est-ce possible?

MichalB
la source
1
vous pouvez également installer l' phpmyadminimage docker localement et vous connecter à votre serveur MySQL distant. plus de détails ici :docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
Xiao

Réponses:

175

Ajoutez simplement les lignes ci-dessous à votre /etc/phpmyadmin/config.inc.phpfichier en bas:

$i++;
$cfg['Servers'][$i]['host'] = 'HostName:port'; //provide hostname and port if other than default
$cfg['Servers'][$i]['user'] = 'userName';   //user name for your remote server
$cfg['Servers'][$i]['password'] = 'Password';  //password
$cfg['Servers'][$i]['auth_type'] = 'config';       // keep it as config

. Vous obtiendrez une liste déroulante «Serveur actuel:» avec à la fois «127.0.0.1» et un commutateur de came «$ cfg ['Serveurs'] [$ i] ['hôte']» entre les serveurs.

plus de détails: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/

Suresh Kamrushi
la source
16
C'est $i++un point important car cela ne nous fera pas perdre la connexion à la base de données avec la valeur par défaut localhost.
Gaurav Ramanan
J'ai également dû suivre les étapes de cet article après l'avoir configuré dans phpMyAdmin pour le faire fonctionner.
Ahmed Akhtar
2
/etc/phpmyadmin/config.inc.phpest le bon fichier à changer
Xiao
La méthode ci-dessus est tout à fait correcte, mais pourquoi vous ne m'avez pas tous dit que je devrais ajouter ou faire ajouter mon adresse IP dans Remote mySql. sinon cela ne fonctionnera pas. S'il vous plaît amis noter ceci aussi
Jaydeep Goswami
Si quelqu'un travaille sur le système Apple, le config.inc.phpfichier se trouve dans le Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.phpfichier.
Anirudha Mahale
23

Il est certainement possible d'accéder à un serveur MySQL distant depuis une instance locale de phpMyAdmin, comme l'ont souligné les autres réponses. Et pour que cela fonctionne, vous devez configurer le serveur MySQL du serveur distant pour accepter les connexions distantes et autoriser le trafic à travers le pare-feu pour le numéro de port que MySQL écoute. Je préfère une solution légèrement différente impliquant SSH Tunneling .

La commande suivante configurera un tunnel SSH qui transmettra toutes les demandes faites au port 3307 de votre machine locale vers le port 3306 sur la machine distante:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

Lorsque vous y êtes invité, vous devez entrer le mot de passe de l'utilisateur root sur la machine distante. Cela ouvrira le tunnel. Si vous voulez l'exécuter en arrière-plan, vous devrez ajouter l' -fargument et configurer SSH sans mot de passe entre votre machine locale et la machine distante.

Une fois que vous avez fait fonctionner le tunnel SSH, vous pouvez ajouter le serveur distant à la liste des serveurs dans votre phpMyAdmin local en modifiant le /etc/phpmyadmin/config.inc.phpfichier. Ajoutez ce qui suit à la fin du fichier:

$cfg['Servers'][$i]['verbose']       = 'Remote Server 1';// Change this to whatever you like.
$cfg['Servers'][$i]['host']          = '127.0.0.1';
$cfg['Servers'][$i]['port']          = '3307';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysqli';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
$i++;

J'ai écrit un article de blog plus détaillé à ce sujet, au cas où vous auriez besoin d'une aide supplémentaire.

refroidissement
la source
1
Je pense que c'est la solution sûre. Ouvrir mySQL à un accès distant direct est généralement considéré comme une mauvaise pratique de sécurité si ce n'est pas absolument nécessaire.
Omn le
1
La réponse de c.hill n'est pas tout à fait juste. Remarque: l'adresse de liaison doit être définie sur l'adresse de bouclage dans le fichier mysql my.cnf.
Pas besoin d'être root sur l'hôte distant. le pont fonctionne parfaitement, merci! Je ne suis pas si sûr de la configuration, cependant, je préfère la réponse de Suresh Kamrushi. $++devrait certainement être la première ligne, pas la dernière, du moins pour mon phpmyadmin.conf par défaut.
frnhr le
Je viens de tomber sur un cas où je devais changer $ cfg ['Servers'] [$ i] ['auth_type'] = 'config'; // le garde comme configuration pour $ cfg ['Servers'] [$ i] ['auth_type'] = 'cookie'; // le garde comme config. Alors merci pour cette astuce!
Phil Lawlor
La meilleure solution!
Ghasem Sadeghi le
23

Cela peut être fait, mais vous devez changer la configuration de phpMyAdmin, lisez ce post: http://www.danielmois.com/article/Manage_remote_databases_from_localhost_with_phpMyAdmin

Si pour une raison quelconque le lien meurt, vous pouvez suivre les étapes suivantes:

  • Trouvez le fichier de configuration de phpMyAdmin, appelé config.inc.php
  • Recherchez la $cfg['Servers'][$i]['host']variable et définissez-la sur l'adresse IP ou le nom d'hôte de votre serveur distant
  • Trouvez la $cfg['Servers'][$i]['port']variable et définissez-la sur le port mysql distant. Habituellement, c'est3306
  • Trouvez les $cfg['Servers'][$i]['user']et les $cfg['Servers'][$i]['password']variables et paramétrés votre nom d' utilisateur et mot de passe pour le serveur distant

Sans une configuration de serveur appropriée, la connexion peut être plus lente qu'une connexion locale par exemple, il serait probablement légèrement plus rapide d'utiliser des adresses IP au lieu de noms d'hôte pour éviter que le serveur n'ait à rechercher l'adresse IP à partir du nom d'hôte.

De plus, rappelez-vous que le nom d'utilisateur et le mot de passe de votre base de données distante sont stockés en texte brut lorsque vous vous connectez de cette manière, vous devez donc prendre des mesures pour vous assurer que personne ne peut accéder à ce fichier de configuration. Vous pouvez également laisser les variables de nom d'utilisateur et de mot de passe vides pour être invité à les saisir à chaque fois que vous vous connectez, ce qui est beaucoup plus sécurisé.

Phil Cross
la source
3
Vous devez également faire en sorte que le pare-feu de l'instance de base de données autorise le trafic et qu'un utilisateur sur le serveur de base de données dispose de privilèges d'accès à distance.
ceejayoz
Puis-je poser une question ici? En tant que débutant, je suis curieux de savoir quelle forme doit avoir le lien, je veux entrer dans le navigateur afin d'accéder à une base de données via phpMyAdmin qui est installée sur un serveur de mon client qui héberge lui-même un site Web.
Garavani
11

Suivez ce billet de blog. Vous pouvez le faire très facilement. https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/

Le fichier config.inc.php contient les paramètres de configuration de votre installation phpMyAdmin. Il utilise un tableau pour stocker des ensembles d'options de configuration pour chaque serveur auquel il peut se connecter et, par défaut, il n'y en a qu'un seul, votre propre machine ou localhost. Pour vous connecter à un autre serveur, vous devez ajouter un autre ensemble d'options de configuration au tableau de configuration. Vous devez éditer ce fichier de configuration.

Ouvrez d' abord le fichier config.inc.php contenu dans le dossier phpMyAdmin . Dans le serveur wamp , vous pouvez le trouver dans le dossier wamp \ apps \ phpmyadmin . Ajoutez ensuite la partie suivante à ce fichier.

$i++;
$cfg['Servers'][$i]['host']          = 'hostname/Ip Adress';
$cfg['Servers'][$i]['port']          = '';
$cfg['Servers'][$i]['socket']        = '';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysql';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'config';
$cfg['Servers'][$i]['user']          = 'username';
$cfg['Servers'][$i]['password']      = 'password';

Voyons quelle est la signification de ces variables.

$i++ :- Incrementing variable for each server
$cfg[‘Servers’][$i][‘host’] :- Server host name or IP adress
$cfg[‘Servers’][$i][‘port’] :- MySQL port (Leave a blank for default port. Default MySQL port is 3306)
$cfg[‘Servers’][$i][‘socket’] :- Path to the socket (Leave a blank for default socket)
$cfg[‘Servers’][$i][‘connect_type’] :- How to connect to MySQL server (‘tcp or socket’)
$cfg[‘Servers’][$i][‘extension’] :- php MySQL extension to use (‘mysql or msqli’)
$cfg[‘Servers’][$i][‘compress’] :- Use compressed protocol for the MySQL connection (requires PHP >= 4.3.0)
$cfg[‘Servers’][$i][‘auth_type’] :- Method of Authentication
$cfg[‘Servers’][$i][‘username’] :- Username to the MySQL database in remote server
$cfg[‘Servers’][$i][‘password’] :- Password to the MySQL database int he remote server

Après avoir ajouté cette partie de configuration, redémarrez votre serveur et maintenant votre page d'accueil phpMyAdmin changera et il affichera un champ pour sélectionner le serveur.

Vous pouvez maintenant sélectionner votre serveur et accéder à votre base de données distante en entrant le nom d'utilisateur et le mot de passe de cette base de données.

Dulanga Sashika
la source
1
pourrait être plus précis et expliquer davantage votre réponse. Les réponses aux liens sont bonnes mais peuvent être inaccessibles si le lien corrompt pour une raison quelconque.
Milad Faridnia
9

Comme indiqué dans la réponse c.hill answer, si vous voulez une solution sécurisée, je vous conseillerais d'ouvrir un tunnel SSH vers votre serveur.

Voici comment procéder pour les utilisateurs Windows :

  1. Téléchargez Plink and Putty depuis le site Web de Putty et placez les fichiers dans le dossier de votre choix (dans mon exemple C:\Putty)

  2. Ouvrez la console Windows et le CD dans le dossier Plink: cd C:\Putty

  3. Ouvrez le tunnel SSH et redirigez vers le port 3307:

    plink -L 3307:localhost:3306 username@server_ip -i path_to_your_private_key.ppk

Où:

  • 3307 est le port local vers lequel vous souhaitez rediriger
  • localhost est l'adresse de la base de données MySQL sur le serveur distant (localhost par défaut)
  • 3306 est le port utilisé pour PhpMyAdmin sur le serveur distant (3306 par défaut)

Enfin, vous pouvez configurer PhpMyAdmin:

  1. Ajoutez le serveur distant à votre configuration PhpMyAdmin locale en ajoutant la ligne suivante à la fin de config.inc.php

Lignes à ajouter:

$i++;   
$cfg['Servers'][$i]['verbose']          = 'Remote Dev server';
$cfg['Servers'][$i]['host']             = 'localhost';
$cfg['Servers'][$i]['port']             = '3307';
$cfg['Servers'][$i]['connect_type']     = 'tcp';
$cfg['Servers'][$i]['extension']        = 'mysqli';
$cfg['Servers'][$i]['compress']         = FALSE;
$cfg['Servers'][$i]['auth_type']        = 'cookie';
  1. Vous devriez pouvoir vous connecter maintenant à http://127.0.0.1/phpmyadmin

Si vous ne souhaitez pas ouvrir la console à chaque fois que vous devez vous connecter à votre serveur distant, créez simplement un fichier batch (en enregistrant les 2 lignes de commande dans un fichier .bat).

Yannickv
la source
6

Vous pouvez définir dans le fichier config.inc.php de votre installation phpMyAdmin.

$cfg['Servers'][$i]['host'] = '';
oo_miguel
la source
5

J'aurais ajouté ceci en commentaire, mais ma réputation n'est pas encore assez élevée.

Sous la version 4.5.4.1deb2ubuntu2, et je suppose que toutes les autres versions 4.5.x ou plus récentes. Il n'est pas du tout nécessaire de modifier le fichier config.inc.php. Au lieu de cela, allez dans un autre répertoire vers le bas conf.d.

Créez un nouveau fichier avec l'extension '.php' et ajoutez les lignes. Il s'agit d'une meilleure approche modulaire qui isole les informations d'accès à chaque serveur de base de données distant.

Ken
la source
2

Accédez au fichier \ phpMyAdmin \ config.inc.php tout en bas, modifiez les détails d'hébergement tels que l'hôte, le nom d'utilisateur, le mot de passe, etc.

Patrick R
la source
2

Dans Ubuntu

Il vous suffit de modifier un seul fichier dans le dossier PHPMyAdmin, c'est-à-dire «config.inc.php». Ajoutez simplement les lignes ci-dessous à votre «config.inc.php».

Emplacement du fichier: /var/lib/phpmyadmin/config.inc.phpOU /etc/phpmyadmin/config.inc.php

Peut-être que vous n'avez pas l'autorisation de modifier ce fichier, donnez simplement l'autorisation en utilisant cette commande

sudo chmod 777 /var/lib/phpmyadmin/config.inc.php

OU (dans différents systèmes, vous devrez peut-être vérifier auprès de ces deux emplacements)

sudo chmod 777 /etc/phpmyadmin/config.inc.php

Ensuite, copiez et collez le code dans votre config.inc.phpfichier

    $i++;
    $cfg['Servers'][$i]['auth_type']     = 'cookie';
    $cfg['Servers'][$i]['verbose'] = 'Database Server 2';
    $cfg['Servers'][$i]['host'] = '34.12.123.31';
    $cfg['Servers'][$i]['connect_type']  = 'tcp';
    $cfg['Servers'][$i]['compress']      = false;
    $cfg['Servers'][$i]['AllowNoPassword'] = false;

Et apportez les modifications appropriées avec les détails de votre serveur

byteC0de
la source
1

Méthode 1 (pour multiserveur)

Tout d'abord, faisons une sauvegarde de la configuration d'origine.

sudo cp /etc/phpmyadmin/config.inc.php      ~/ 

Maintenant, dans / usr / share / doc / phpmyadmin / examples / vous verrez un fichier config.manyhosts.inc.php . Copiez simplement dans / etc / phpmyadmin / en utilisant la commande ci-dessous:

sudo cp /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php \
        /etc/phpmyadmin/config.inc.php

Modifiez le config.inc.php

sudo nano /etc/phpmyadmin/config.inc.php 

Rechercher :

$hosts = array (
    "foo.example.com",
    "bar.example.com",
    "baz.example.com",
    "quux.example.com",
);

Et ajoutez votre sauvegarde de tableau d'ip ou de nom d'hôte (dans nano CTRL + X appuyez sur Y) et quittez. Terminé

Méthode 2 (serveur unique) Modifiez le fichier config.inc.php

sudo nano /etc/phpmyadmin/config.inc.php 

Rechercher :

/* Server parameters */
if (empty($dbserver)) $dbserver = 'localhost';
$cfg['Servers'][$i]['host'] = $dbserver;

if (!empty($dbport) || $dbserver != 'localhost') {
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
    $cfg['Servers'][$i]['port'] = $dbport;
}

Et remplacer par:

$cfg['Servers'][$i]['host'] = '192.168.1.100';
$cfg['Servers'][$i]['port'] = '3306';

N'oubliez pas de remplacer 192.168.1.100 par votre propre serveur ip mysql.

Désolé pour mon mauvais anglais (google translate a le blâme: D)

Cornée Valentin
la source
1

Pendant que je teste, il trouve le fichier config.default.php

puis trouve $ cfg ['AllowArbitraryServer'] = false;

puis réglez-le sur vrai

note: sur ubuntu le fichier dans le chemin /usr/share/phpmyadmin/libraries/config.default.php

alors vous trouverez un nouveau nom de fichier SERVER dans la page principale PHPMyAdmin, vous pouvez y ajouter n'importe quelle adresse IP ou localhost pour la base de données locale.

Mohannd
la source
0

Dans Windows avec Wamp Server installé, vous pouvez trouver le fichier de configuration

C:\wamp64\apps\phpmyadmin4.8.4\config.inc.php

Changez la ligne de boulonnage comme il convient

$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['port'] = 3306;//$wampConf['mysqlPortUsed'];
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
décodeur
la source
-1

Supprimer les entrées complètes de /etc/http/conf.d/phpMyAdmin.conf

Et ci-dessous entires dans le fichier ci-dessus,

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       #ADD following line:
       Require all granted
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     #CHANGE following 2 lines:
     Order Allow,Deny
     Allow from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

Ensuite,

exécutez la commande ci-dessous dans l'invite MySQL,

GRANT ALL ON *.* to root@localhost IDENTIFIED BY 'root@<password>'

GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'root@<password>'

Pour référence: Autoriser IP à accéder à PhpMyAdmin sécurisé

syed191
la source