¿Cómo acceder al servidor remoto con el cliente phpMyAdmin local?

134

Suponiendo que hay un servidor remoto y tengo el cliente phpMyAdmin instalado localmente en mi computadora. ¿Cómo puedo acceder a este servidor y administrarlo a través del cliente phpMyAdmin? ¿Es eso posible?

MichalB
fuente
1
También puede instalar la phpmyadminimagen del acoplador localmente y conectarse a su servidor MySQL remoto. más detalles aquí :docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
Xiao

Respuestas:

175

Simplemente agregue las siguientes líneas a su /etc/phpmyadmin/config.inc.phparchivo en la parte inferior:

$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

. Obtendrá el menú desplegable “Servidor actual:” con “127.0.0.1” y uno que proporcionó con el conmutador de leva “$ cfg ['Servidores'] [$ i] ['host']” entre los servidores.

más detalles: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/

Suresh Kamrushi
fuente
16
El $i++es un punto importante ya que esto no nos hará perder la conexión de la base de datos con el valor predeterminado localhost.
Gaurav Ramanan
También tuve que seguir los pasos en esta publicación después de configurarlo en phpMyAdmin para que funcione.
Ahmed Akhtar
2
/etc/phpmyadmin/config.inc.phpes el archivo correcto que se cambiará
Xiao
El método anterior es absolutamente correcto, pero por qué no me dijeron que tendré que agregar o agregar mi dirección IP en Remote mySql. De lo contrario, no funcionará. Por favor, amigos, ten en cuenta esto también
Jaydeep Goswami
Si alguien está trabajando en el sistema Apple, entonces el config.inc.phparchivo se encuentra en el Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.phparchivo.
Anirudha Mahale
23

Ciertamente es posible acceder a un servidor MySQL remoto desde una instancia local de phpMyAdmin, como lo han señalado las otras respuestas. Y para que eso funcione, debe configurar el servidor MySQL del servidor remoto para aceptar conexiones remotas y permitir el tráfico a través del firewall para el número de puerto que MySQL está escuchando. Prefiero una solución ligeramente diferente que implica el túnel SSH .

El siguiente comando configurará un túnel SSH que reenviará todas las solicitudes realizadas al puerto 3307 desde su máquina local al puerto 3306 en la máquina remota:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

Cuando se le solicite, debe ingresar la contraseña para el usuario root en la máquina remota. Esto abrirá el túnel. Si desea ejecutar esto en segundo plano, deberá agregar el -fargumento y configurar SSH sin contraseña entre su máquina local y la máquina remota.

Una vez que tenga el túnel SSH funcionando, puede agregar el servidor remoto a la lista de servidores en su phpMyAdmin local modificando el /etc/phpmyadmin/config.inc.phparchivo. Agregue lo siguiente al final del archivo:

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

Escribí una publicación de blog más detallada sobre exactamente esto, en caso de que necesite ayuda adicional.

frío
fuente
1
Creo que esta es la solución segura. Abrir mySQL para acceso remoto directo generalmente se considera una mala práctica de seguridad si no es absolutamente necesario.
Omn
1
La respuesta de c.hill no es del todo correcta. Tenga en cuenta: la dirección de enlace debe establecerse en la dirección de bucle de retorno en el archivo mysql my.cnf.
No es necesario ser root en el host remoto. el puente funciona perfectamente, gracias! Sin embargo, no estoy tan seguro de la configuración, prefiero la respuesta de Suresh Kamrushi. $++definitivamente debería ser la primera línea, no la última, al menos para mi phpmyadmin.conf predeterminado.
vie
Acabo de encontrar un caso en el que necesitaba cambiar $ cfg ['Servidores'] [$ i] ['auth_type'] = 'config'; // manténgalo como configuración en $ cfg ['Servidores'] [$ i] ['auth_type'] = 'cookie'; // mantenerlo como config. Así que gracias por ese consejo!
Phil Lawlor
¡La mejor solucion!
Ghasem Sadeghi
23

Se puede hacer, pero necesita cambiar la configuración de phpMyAdmin, lea esta publicación: http://www.danielmois.com/article/Manage_remote_databases_from_localhost_with_phpMyAdmin

Si por alguna razón el enlace muere, puede seguir los siguientes pasos:

  • Encuentra el archivo de configuración de phpMyAdmin, llamado config.inc.php
  • Encuentra el $cfg['Servers'][$i]['host'] variable y configúrela en la IP o el nombre de host de su servidor remoto
  • Encuentre la $cfg['Servers'][$i]['port']variable y configúrela en el puerto remoto de mysql. Por lo general esto es3306
  • Encuentra los $cfg['Servers'][$i]['user']y $cfg['Servers'][$i]['password']las variables y establecer de inmediato a su nombre de usuario y contraseña para el servidor remoto

Sin la configuración adecuada del servidor, la conexión puede ser más lenta que una conexión local, por ejemplo, probablemente sería un poco más rápido usar direcciones IP en lugar de nombres de host para evitar que el servidor tenga que buscar la dirección IP desde el nombre de host.

Además, recuerde que el nombre de usuario y la contraseña de su base de datos remota se almacenan en texto sin formato cuando se conecta de esta manera, por lo que debe tomar medidas para asegurarse de que nadie pueda acceder a este archivo de configuración. Alternativamente, puede dejar las variables de nombre de usuario y contraseña vacías para que se les solicite ingresarlas cada vez que inicie sesión, lo que es mucho más seguro.

Phil Cross
fuente
3
También debe tener el firewall en la instancia de la base de datos que permita el tráfico y un usuario en el servidor de base de datos con privilegios de acceso remoto.
ceejayoz
¿Puedo hacer una pregunta aquí? Como novato, tengo curiosidad por saber qué forma debe tener el enlace que quiero ingresar en el navegador para acceder a una base de datos a través de phpMyAdmin que está instalada en un servidor de mi cliente que aloja un sitio web.
Garavani
11

Sigue esta publicación de blog. Puedes hacerlo muy fácilmente. https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/

El archivo config.inc.php contiene los ajustes de configuración para su instalación phpMyAdmin. Utiliza una matriz para almacenar conjuntos de opciones de configuración para cada servidor al que puede conectarse y, de forma predeterminada, solo hay uno, su propia máquina o localhost. Para conectarse a otro servidor, tendría que agregar otro conjunto de opciones de configuración a la matriz de configuración. Tienes que editar este archivo de configuración.

Primero abra el archivo config.inc.php que se encuentra en la carpeta phpMyAdmin . En el servidor wamp , puede encontrarlo en la carpeta wamp \ apps \ phpmyadmin . Luego agregue la siguiente parte a ese archivo.

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

Veamos cuál es el significado de estas 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

Después de agregar esta parte de configuración, reinicie su servidor y ahora su página de inicio de phpMyAdmin cambiará y mostrará un campo para seleccionar el servidor.

Ahora puede seleccionar su servidor y acceder a su base de datos remota ingresando nombre de usuario y contraseña para esa base de datos.

Dulanga Sashika
fuente
1
podría ser más preciso y explicar más sobre su respuesta. las respuestas del enlace son buenas, pero pueden no ser accesibles si el enlace se corrompe por algún motivo.
Milad Faridnia
9

Como se indicó en la respuesta c.hill answer, si desea una solución segura le aconsejaría que abra un túnel SSH en su servidor.

Aquí está la forma de hacerlo para los usuarios de Windows :

  1. Descargue Plink and Putty del sitio web de Putty y coloque los archivos en la carpeta que elija (en mi ejemplo C:\Putty)

  2. Abra la consola de Windows y cd en la carpeta Plink: cd C:\Putty

  3. Abra el túnel SSH y redirija al puerto 3307:

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

Dónde:

  • 3307 es el puerto local al que desea redirigir
  • localhost es la dirección de MySQL DB en el servidor remoto (localhost por defecto)
  • 3306 es el uso del puerto para PhpMyAdmin en el servidor remoto (3306 por defecto)

Finalmente puedes configurar PhpMyAdmin:

  1. Agregue el servidor remoto a su configuración local de PhpMyAdmin agregando la siguiente línea al final de config.inc.php

Líneas para agregar:

$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. Debería poder conectarse ahora en http://127.0.0.1/phpmyadmin

Si no desea abrir la consola cada vez que necesite conectarse a su servidor remoto, simplemente cree un archivo por lotes (guardando las 2 líneas de comando en un archivo .bat).

Yannickv
fuente
6

Puede configurarlo en el archivo config.inc.php de su instalación phpMyAdmin.

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

Hubiera agregado esto como un comentario, pero mi reputación aún no es lo suficientemente alta.

Bajo la versión 4.5.4.1deb2ubuntu2, y supongo que cualquier otra versión 4.5.xo posterior. No hay necesidad de modificar el archivo config.inc.php en absoluto. En su lugar, vaya un directorio más hacia abajo conf.d.

Cree un nuevo archivo con la extensión '.php' y agregue las líneas. Este es un enfoque modularizado mejor y aísla la información de acceso a cada servidor de base de datos remoto.

Conocido
fuente
2

Vaya al archivo \ phpMyAdmin \ config.inc.php en la parte inferior, cambie los detalles del alojamiento, como el host, el nombre de usuario, la contraseña, etc.

Patrick R
fuente
2

En Ubuntu

Solo necesita modificar un solo archivo en la carpeta PHPMyAdmin, es decir, "config.inc.php". Simplemente agregue las líneas siguientes a su "config.inc.php".

Ubicación del archivo: /var/lib/phpmyadmin/config.inc.phpO /etc/phpmyadmin/config.inc.php

Tal vez no tienes el permiso para editar ese archivo, solo da el permiso usando este comando

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

O (en diferentes sistemas puede que tenga que consultar con estas dos ubicaciones)

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

Luego copie y pegue el código en su config.inc.phparchivo

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

Y realice los cambios apropiados con los detalles de su servidor

byteC0de
fuente
1

Método 1 (para multiservidor)

Primero, hagamos una copia de seguridad de la configuración original.

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

Ahora en / usr / share / doc / phpmyadmin / examples / verá un archivo config.manyhosts.inc.php . Simplemente copie a / etc / phpmyadmin / usando el siguiente comando:

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

Edite el config.inc.php

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

Buscar :

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

Y agregue su guardado de matriz de IP o nombre de host (en nano CTRL + X presione Y) y salga. Hecho

Método 2 (servidor único) Edite el config.inc.php

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

Buscar :

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

Y reemplazar con:

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

Recuerde reemplazar 192.168.1.100 con su propio servidor ip mysql.

Perdón por mi mal inglés (el traductor de Google tiene la culpa: D)

Córnea Valentin
fuente
1

Mientras lo pruebo, encuentro el archivo config.default.php

entonces busca $ cfg ['AllowArbitraryServer'] = falso;

luego configúrelo como verdadero

nota: en ubuntu el archivo en la ruta /usr/share/phpmyadmin/libraries/config.default.php

luego encontrará un nuevo SERVER de nombre archivado en la página principal de PHPMyAdmin, puede agregarle cualquier IP o host local para la base de datos local.

Mohannd
fuente
0

En Windows con el servidor Wamp instalado, puede encontrar el archivo de configuración

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

Cambie la línea de bolow según corresponda

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

Eliminar entradas completas de /etc/http/conf.d/phpMyAdmin.conf

Y abajo entra en el archivo de arriba,

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

Luego,

ejecutar debajo del comando en el indicador de MySQL,

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

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

Como referencia: permitir que IP acceda a PhpMyAdmin seguro

syed191
fuente