Como acessar o servidor remoto com o cliente phpMyAdmin local?

134

Supondo que exista um servidor remoto e que eu tenha o cliente phpMyAdmin instalado localmente no meu computador. Como posso acessar este servidor e gerenciá-lo através do cliente phpMyAdmin? Isso é possível?

MichalB
fonte
1
você também pode instalar a phpmyadminimagem do docker localmente e conectar-se ao seu servidor MySQL remoto. mais detalhes aqui :docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
Xiao

Respostas:

175

Basta adicionar linhas abaixo ao seu /etc/phpmyadmin/config.inc.phparquivo na 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

. Você receberá o “Servidor atual:” suspenso com “127.0.0.1” e um que você forneceu com a troca de came “$ cfg ['Servers'] [$ i] ['host']” entre os servidores.

mais detalhes: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/

Suresh Kamrushi
fonte
16
O $i++é um ponto importante, pois isso não nos fará perder a conexão do banco de dados com o padrão localhost.
Gaurav Ramanan
Eu também tive que seguir as etapas deste post após configurá-lo no phpMyAdmin para fazê-lo funcionar.
Ahmed Akhtar
2
/etc/phpmyadmin/config.inc.phpé o arquivo correto a ser alterado
Xiao
O método acima está absolutamente correto, mas por que todos vocês não me disseram que terei que adicionar ou adicionar meu endereço IP no mySql remoto. caso contrário, não funcionará. Por favor note que este amigos também
Jaydeep Goswami
Se alguém estiver trabalhando no sistema Apple, o config.inc.phparquivo está localizado no Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.phparquivo
Anirudha Mahale 28/03
23

Certamente é possível acessar um servidor MySQL remoto a partir de uma instância local do phpMyAdmin, como as outras respostas apontaram. E para que isso funcione, você precisa configurar o servidor MySQL do servidor remoto para aceitar conexões remotas e permitir tráfego através do firewall para o número da porta que o MySQL está ouvindo. Eu prefiro uma solução ligeiramente diferente envolvendo o tunelamento SSH .

O comando a seguir configurará um túnel SSH que encaminhará todas as solicitações feitas para a porta 3307 da sua máquina local para a porta 3306 na máquina remota:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

Quando solicitado, você deve digitar a senha do usuário root na máquina remota. Isso abrirá o túnel. Se você quiser executar isso em segundo plano, precisará adicionar o -fargumento e configurar o SSH sem senha entre a máquina local e a máquina remota.

Depois que o túnel SSH estiver funcionando, você poderá adicionar o servidor remoto à lista de servidores no phpMyAdmin local, modificando o /etc/phpmyadmin/config.inc.phparquivo. Adicione o seguinte ao final do arquivo:

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

Eu escrevi um post de blog mais aprofundado sobre exatamente isso, caso você precise de ajuda adicional.

calafrio
fonte
1
Eu acho que essa é a solução segura. Abrir o mySQL para acesso remoto direto é geralmente considerado uma prática de segurança ruim, se não for absolutamente necessário.
Omn
1
A resposta de c.hill não está certa. Observe: O endereço de ligação deve ser definido como o endereço de retorno no arquivo mysql my.cnf.
Não há necessidade de ser root no host remoto. a ponte funciona perfeitamente, obrigado! Não tenho tanta certeza sobre a configuração, porém, prefiro a resposta de Suresh Kamrushi. $++definitivamente deveria ser a primeira linha, não a última, pelo menos para o meu phpmyadmin.conf padrão.
Frnhr 16/09/2015
Acabei de encontrar um caso em que precisava alterar $ cfg ['Servidores'] [$ i] ['auth_type'] = 'config'; // mantenha como configuração para $ cfg ['Servidores'] [$ i] ['auth_type'] = 'cookie'; // mantenha como config. Então, obrigado por essa dica!
Phil Lawlor 02/02
A melhor solução!
Ghasem Sadeghi 19/02
23

Isso pode ser feito, mas você precisa alterar a configuração do phpMyAdmin, leia esta postagem: http://www.danielmois.com/article/Manage_remote_databases_from_localhost_with_phpMyAdmin

Se, por qualquer motivo, o link acabar, você poderá usar as seguintes etapas:

  • Localize o arquivo de configuração do phpMyAdmin, chamado config.inc.php
  • Localize a $cfg['Servers'][$i]['host']variável e defina-a como o IP ou o nome do host do seu servidor remoto
  • Encontre a $cfg['Servers'][$i]['port']variável e defina-a na porta mysql remota. Geralmente isso é3306
  • Encontre os $cfg['Servers'][$i]['user']e $cfg['Servers'][$i]['password']variáveis e definir estes para seu nome de usuário e senha para o servidor remoto

Sem uma configuração adequada do servidor, a conexão pode ser mais lenta que uma conexão local, por exemplo, provavelmente seria um pouco mais rápido usar endereços IP em vez de nomes de host para evitar que o servidor tenha que procurar o endereço IP pelo nome do host.

Além disso, lembre-se de que o nome de usuário e a senha do seu banco de dados remoto são armazenados em texto sem formatação quando você se conecta dessa maneira; portanto, você deve tomar medidas para garantir que ninguém possa acessar esse arquivo de configuração. Como alternativa, você pode deixar em branco as variáveis ​​de nome de usuário e senha para que sejam solicitadas a inseri-las sempre que efetuar login, o que é muito mais seguro.

Phil Cross
fonte
3
Você também precisa ter o firewall na instância do banco de dados para permitir o tráfego e um usuário no servidor DB com privilégios para acesso remoto.
ceejayoz
Posso fazer uma pergunta aqui? Como iniciante, estou curioso para saber qual formulário o link deve ter no navegador para acessar um banco de dados via phpMyAdmin instalado em um servidor do meu cliente que hospeda um site.
Garavani 29/05
11

Siga esta postagem do blog. Você pode fazer isso com muita facilidade. https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/

O arquivo config.inc.php contém as configurações da sua instalação do phpMyAdmin. Ele usa uma matriz para armazenar conjuntos de opções de configuração para cada servidor ao qual ele pode se conectar e, por padrão, há apenas um, sua própria máquina ou host local. Para conectar-se a outro servidor, você teria que adicionar outro conjunto de opções de configuração à matriz de configurações. Você precisa editar este arquivo de configuração.

Primeiro abra o arquivo config.inc.php na pasta phpMyAdmin . No servidor wamp , você pode encontrá-lo na pasta wamp \ apps \ phpmyadmin . Em seguida, adicione a parte a seguir nesse arquivo.

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

Vamos ver qual é o significado dessas variáveis.

$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

Após adicionar esta parte da configuração, reinicie o servidor e agora sua página inicial do phpMyAdmin será alterada e mostrará um campo para selecionar o servidor.

Agora você pode selecionar seu servidor e acessar seu banco de dados remoto digitando nome de usuário e senha para esse banco de dados.

Dulanga Sashika
fonte
1
poderia ser mais preciso e explicar mais sobre sua resposta. as respostas do link são boas, mas podem ser inacessíveis se o link for corrompido por qualquer motivo.
Milad Faridnia
9

Conforme indicado na resposta c.hill answer, se você quiser uma solução segura , aconselho a abrir um túnel SSH para o servidor.

Aqui está a maneira de fazer isso para usuários do Windows :

  1. Faça o download do Plink e do Putty no site do Putty e coloque os arquivos na pasta de sua escolha (no meu exemplo C:\Putty)

  2. Abra o console do Windows e o CD na pasta Plink: cd C:\Putty

  3. Abra o túnel SSH e redirecione para a porta 3307:

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

Onde:

  • 3307 é a porta local para a qual você deseja redirecionar
  • localhost é o endereço do banco de dados MySQL no servidor remoto (localhost por padrão)
  • 3306 é a porta usada pelo PhpMyAdmin no servidor remoto (3306 por padrão)

Finalmente, você pode configurar o PhpMyAdmin:

  1. Adicione o servidor remoto à sua configuração local do PhpMyAdmin adicionando a seguinte linha no final do config.inc.php

Linhas a serem adicionadas:

$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. Você deve conseguir se conectar agora em http://127.0.0.1/phpmyadmin

Se você não deseja abrir o console sempre que precisar se conectar ao servidor remoto, basta criar um arquivo em lotes (salvando as 2 linhas de comando em um arquivo .bat).

Yannickv
fonte
6

Você pode configurar o arquivo config.inc.php da sua instalação do phpMyAdmin.

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

Eu acrescentaria isso como um comentário, mas minha reputação ainda não é alta o suficiente.

Na versão 4.5.4.1deb2ubuntu2, e acho que qualquer outra versão 4.5.x ou mais recente. Não há necessidade de modificar o arquivo config.inc.php. Em vez disso, vá mais um diretório para baixo conf.d.

Crie um novo arquivo com a extensão '.php' e adicione as linhas. Essa é uma abordagem modularizada melhor e isola as informações de acesso de cada servidor de banco de dados remoto.

Ken
fonte
2

Vá para o arquivo \ phpMyAdmin \ config.inc.php na parte inferior, altere os detalhes de hospedagem, como host, nome de usuário, senha etc.

Patrick R
fonte
2

No Ubuntu

Você só precisa modificar um único arquivo na pasta PHPMyAdmin, isto é, “config.inc.php”. Basta adicionar as linhas abaixo ao seu “config.inc.php”.

Local do arquivo: /var/lib/phpmyadmin/config.inc.phpOR /etc/phpmyadmin/config.inc.php

Talvez você não tenha permissão para editar esse arquivo, apenas dê a permissão usando este comando

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

OU (em sistemas diferentes, talvez seja necessário verificar com esses dois locais)

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

Em seguida, copie e cole o código no seu config.inc.phparquivo

    $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 faça as alterações apropriadas com os detalhes do servidor

byteC0de
fonte
1

Método 1 (para multiserver)

Primeiro, vamos fazer um backup da configuração original.

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

Agora em / usr / share / doc / phpmyadmin / examples / você verá um arquivo config.manyhosts.inc.php . Basta copiar para / etc / phpmyadmin / usando o comando abaixo:

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

Edite o arquivo config.inc.php

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

Procurar por :

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

E adicione seu array de ip ou hostname save (no nano CTRL + X, pressione Y) e saia. Feito

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

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

Procurar por :

/* 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 substitua por:

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

Lembre-se de substituir 192.168.1.100 pelo seu próprio servidor mysql ip.

Desculpe pelo meu inglês ruim (o google tradutor tem a culpa: D)

Cornea Valentin
fonte
1

Enquanto testo ele encontra o arquivo config.default.php

então encontre $ cfg ['AllowArbitraryServer'] = false;

em seguida, defina-o como true

note: no ubuntu, o arquivo no caminho /usr/share/phpmyadmin/libraries/config.default.php

em seguida, você encontrará um novo nome de arquivo SERVER na página principal do PHPMyAdmin e poderá adicionar qualquer IP ou host local para o banco de dados local.

Mohannd
fonte
0

No Windows com o Wamp Server instalado, você pode encontrar o arquivo de configuração

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

Mude a linha do parafuso conforme apropriado

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

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

E abaixo entra no arquivo acima,

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

Então,

execute o comando abaixo no prompt do MySQL,

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

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

Para referência: Permitir que o IP acesse o PhpMyAdmin protegido

syed191
fonte