Come accedere al server remoto con client phpMyAdmin locale?


134

Supponendo che ci sia un server remoto e ho client phpMyAdmin installato localmente sul mio computer. Come posso accedere a questo server e gestirlo tramite il client phpMyAdmin? È possibile?


1
puoi anche installare l' phpmyadminimmagine docker localmente e collegarti al tuo server MySQL remoto. maggiori dettagli qui :docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
Xiao

Risposte:


175

Aggiungi solo le righe di seguito al tuo /etc/phpmyadmin/config.inc.phpfile in fondo:

$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

. Verrà visualizzato il menu a discesa "Current Server:" con entrambi "127.0.0.1" e uno che hai fornito con "$ cfg ['Server'] [$ i] ['host']" tra i server.

maggiori dettagli: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/


16
Questo $i++è un punto importante in quanto ciò non ci farà perdere la connessione al database con l'impostazione predefinita localhost.
Gaurav Ramanan,

Ho anche dovuto seguire i passaggi in questo post dopo averlo impostato in phpMyAdmin per farlo funzionare.
Ahmed Akhtar,

2
/etc/phpmyadmin/config.inc.phpè il file corretto da modificare
Xiao

Il metodo sopra è assolutamente corretto, ma perché non mi avete detto che dovrò aggiungere o farlo aggiungere il mio indirizzo IP in Remote mySql. altrimenti non funzionerà. Per favore, gli amici lo notano anche
Jaydeep Goswami,

Se qualcuno sta lavorando sul sistema Apple, il config.inc.phpfile si trova nel Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.phpfile.
Anirudha Mahale il

23

È certamente possibile accedere a un server MySQL remoto da un'istanza locale di phpMyAdmin, come hanno sottolineato le altre risposte. E affinché funzioni, devi configurare il server MySQL del server remoto per accettare connessioni remote e consentire il traffico attraverso il firewall per il numero di porta che MySQL sta ascoltando. Preferisco una soluzione leggermente diversa che coinvolga il tunneling SSH .

Il comando seguente imposterà un tunnel SSH che inoltrerà tutte le richieste fatte alla porta 3307 dal tuo computer locale alla porta 3306 sul computer remoto:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

Quando richiesto, è necessario immettere la password per l'utente root sul computer remoto. Questo aprirà il tunnel. Se si desidera eseguire questo in background, è necessario aggiungere l' -fargomento e impostare SSH senza password tra il computer locale e il computer remoto.

Dopo aver funzionato il tunnel SSH, puoi aggiungere il server remoto all'elenco dei server nel tuo phpMyAdmin locale modificando il /etc/phpmyadmin/config.inc.phpfile. Aggiungi quanto segue alla fine del file:

$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++;

Ho scritto un post sul blog più approfondito proprio su questo, nel caso abbiate bisogno di ulteriore aiuto.


1
Penso che questa sia la soluzione sicura. L'apertura di mySQL per indirizzare l'accesso remoto è generalmente considerata una cattiva pratica di sicurezza se non è assolutamente necessaria.
Omn,

1
La risposta di c.hill non è del tutto corretta. Nota: l'indirizzo di bind deve essere impostato sull'indirizzo di loopback nel file mysql my.cnf.

Non è necessario essere root sull'host remoto. il ponte funziona perfettamente, grazie! Non sono così sicuro della configurazione, tuttavia, preferisco la risposta di Suresh Kamrushi. $++dovrebbe essere sicuramente la prima riga, non ultima, almeno per il mio phpmyadmin.conf predefinito.
dal

Ho appena incontrato un caso in cui dovevo cambiare $ cfg ['Servers'] [$ i] ['auth_type'] = 'config'; // mantenerlo come config in $ cfg ['Servers'] [$ i] ['auth_type'] = 'cookie'; // tienilo come config. Quindi grazie per quel suggerimento!
Phil Lawlor,

La migliore soluzione!
Ghasem Sadeghi,

23

Può essere fatto, ma è necessario modificare la configurazione di phpMyAdmin, leggi questo post: http://www.danielmois.com/article/Manage_remote_database_from_localhost_with_phpMyAdmin

Se per qualsiasi motivo il collegamento si interrompe, è possibile utilizzare i seguenti passaggi:

  • Trova il file di configurazione di phpMyAdmin, chiamato config.inc.php
  • Trova la $cfg['Servers'][$i]['host']variabile e impostala sull'IP o sul nome host del tuo server remoto
  • Trova la $cfg['Servers'][$i]['port']variabile e impostala sulla porta mysql remota. Di solito questo è3306
  • Trova le $cfg['Servers'][$i]['user']e $cfg['Servers'][$i]['password']variabili e impostare questi per il nome utente e la password per il server remoto

Senza una corretta configurazione del server, la connessione potrebbe essere più lenta di una connessione locale, ad esempio, sarebbe probabilmente leggermente più veloce usare gli indirizzi IP anziché i nomi host per evitare che il server debba cercare l'indirizzo IP dal nome host.

Inoltre, ricorda che il nome utente e la password del tuo database remoto sono memorizzati in testo normale quando ti connetti in questo modo, quindi dovresti prendere delle misure per assicurarti che nessuno possa accedere a questo file di configurazione. In alternativa, puoi lasciare vuote le variabili nome utente e password per ricevere la richiesta di inserirle ogni volta che accedi, il che è molto più sicuro.


3
È inoltre necessario che il firewall sull'istanza del database consenta il traffico e un utente sul server DB con privilegi per l'accesso remoto.
Ceejayoz,

Posso fare una domanda qui? Come neofita sono curioso di sapere quale forma dovrebbe avere il link che voglio inserire nel browser per accedere a un database tramite phpMyAdmin installato su un server del mio client che ospita un sito Web stesso.
Garavani,

11

Segui questo post sul blog. Puoi farlo molto facilmente. https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/

Il file config.inc.php contiene le impostazioni di configurazione per l'installazione di phpMyAdmin. Utilizza un array per archiviare set di opzioni di configurazione per ogni server a cui è in grado di connettersi e per impostazione predefinita è disponibile solo uno, il proprio computer o localhost. Per connettersi a un altro server, è necessario aggiungere un altro set di opzioni di configurazione all'array di configurazione. Devi modificare questo file di configurazione.

Prima apri il file config.inc.php contenuto nella cartella phpMyAdmin . Nel server wamp , puoi trovarlo nella cartella wamp \ apps \ phpmyadmin . Quindi aggiungere la seguente parte a quel file.

$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';

Vediamo qual è il significato di queste variabili.

$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

Dopo aver aggiunto questa parte di configurazione, riavvia il server e ora la home page di phpMyAdmin cambierà e mostrerà un campo per selezionare il server.

Ora puoi selezionare il tuo server e accedere al tuo database remoto inserendo username e password per quel database.


1
potrebbe essere più preciso e spiegare meglio la tua risposta. le risposte al link sono buone ma potrebbero non essere raggiungibili se il link si corrompe per qualsiasi motivo.
Milad Faridnia,

9

Come indicato nella risposta c.hill answer, se si desidera una soluzione sicura, si consiglia di aprire un tunnel SSH sul server.

Ecco il modo di farlo per gli utenti Windows :

  1. Scarica Plink and Putty dal sito Web Putty e posiziona i file nella cartella di tua scelta (Nel mio esempio C:\Putty)

  2. Apri la console di Windows e cd nella cartella Plink: cd C:\Putty

  3. Apri il tunnel SSH e reindirizza alla porta 3307:

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

Dove:

  • 3307 è la porta locale che si desidera reindirizzare
  • localhost è l'indirizzo del database MySQL sul server remoto (localhost per impostazione predefinita)
  • 3306 è l'uso della porta per PhpMyAdmin sul server remoto (3306 per impostazione predefinita)

Finalmente puoi configurare PhpMyAdmin:

  1. Aggiungi il server remoto alla tua configurazione PhpMyAdmin locale aggiungendo la seguente riga alla fine di config.inc.php

Linee da aggiungere:

$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. Ora dovresti essere in grado di connetterti a http://127.0.0.1/phpmyadmin

Se non si desidera aprire la console ogni volta che è necessario connettersi al server remoto, è sufficiente creare un file batch (salvando le 2 righe di comando in un file .bat).


6

Puoi impostare il file config.inc.php della tua installazione di phpMyAdmin.

$cfg['Servers'][$i]['host'] = '';

5

Lo avrei aggiunto come commento, ma la mia reputazione non è ancora abbastanza elevata.

Sotto la versione 4.5.4.1deb2ubuntu2 e sto indovinando qualsiasi altra versione 4.5.xo successive. Non è necessario modificare il file config.inc.php. Invece vai in un'altra directory giù conf.d.

Crea un nuovo file con l'estensione ".php" e aggiungi le righe. Questo è un approccio meglio modulare e isola ogni informazione di accesso al server di database remoto.


2

Vai al file \ phpMyAdmin \ config.inc.php in fondo, modifica i dettagli di hosting come host, nome utente, password ecc.


2

In Ubuntu

Devi solo modificare un singolo file nella cartella PHPMyAdmin, ad esempio "config.inc.php". Basta aggiungere le righe sottostanti al tuo "config.inc.php".

Posizione del file: /var/lib/phpmyadmin/config.inc.phpOR /etc/phpmyadmin/config.inc.php

Forse non hai il permesso per modificare quel file, ma dai il permesso usando questo comando

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

OPPURE (in sistemi diversi potrebbe essere necessario verificare con queste due posizioni)

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

Quindi copia e incolla il codice nel tuo config.inc.phpfile

    $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;

E apporta le modifiche appropriate con i dettagli del tuo server


1

Metodo 1 (per multiserver)

Innanzitutto, facciamo un backup della configurazione originale.

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

Ora in / usr / share / doc / phpmyadmin / esempi / vedrai un file config.manyhosts.inc.php . Copia in / etc / phpmyadmin / usando il comando seguente:

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

Modifica il file config.inc.php

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

Cercare :

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

E aggiungi il tuo array IP o hostname salva (in nano CTRL + X premi Y) ed esci. Fatto

Metodo 2 (server singolo) Modifica config.inc.php

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

Cercare :

/* 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;
}

E sostituisci con:

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

Ricorda di sostituire 192.168.1.100 con il tuo server mysql ip.

Ci scusiamo per il mio cattivo inglese (google translate ha la colpa: D)


1

Mentre provo, trovo il file config.default.php

quindi trova $ cfg ['AllowArbitraryServer'] = false;

quindi impostalo su true

nota: su ubuntu il file nel percorso /usr/share/phpmyadmin/libraries/config.default.php

quindi troverai un nuovo nome SERVER archiviato nella pagina principale di PHPMyAdmin, puoi aggiungere ad esso qualsiasi IP o localhost per il database locale.


0

In Windows con Wamp Server installato è possibile trovare il file di configurazione

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

Modificare la linea bolow come appropriato

$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'] = '';

-1

Elimina le voci complete di /etc/http/conf.d/phpMyAdmin.conf

E sotto implica nel file sopra,

<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>

Poi,

esegui sotto il comando nel prompt di MySQL,

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

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

Per riferimento: consentire a IP di accedere a PhpMyAdmin protetto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.