Bagaimana cara mengakses server jarak jauh dengan klien phpMyAdmin lokal?

134

Dengan asumsi ada server jauh dan saya punya klien phpMyAdmin diinstal secara lokal di komputer saya. Bagaimana saya bisa mengakses server ini dan mengelolanya melalui klien phpMyAdmin? Apakah itu mungkin?

MichalB
sumber
1
Anda juga dapat menginstal phpmyadmingambar buruh pelabuhan secara lokal dan menyambung ke server MySQL jarak jauh Anda. lebih detail di sini :docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
Xiao

Jawaban:

175

Cukup tambahkan baris di bawah ini ke /etc/phpmyadmin/config.inc.phpfile Anda di bagian bawah:

$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

. Anda akan mendapatkan "Server Saat Ini:" drop down dengan "127.0.0.1" dan yang Anda berikan dengan "$ cfg ['Server'] [$ i] ['host']" beralih cam antara server.

Lebih detail: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/

Suresh Kamrushi
sumber
16
Ini $i++adalah poin penting karena ini tidak akan membuat kita kehilangan koneksi database dengan default localhost.
Gaurav Ramanan
Saya juga harus mengikuti langkah-langkah dalam posting ini setelah mengaturnya di phpMyAdmin untuk membuatnya berfungsi.
Ahmed Akhtar
2
/etc/phpmyadmin/config.inc.phpadalah file yang benar untuk diubah
Xiao
Metode di atas benar-benar benar, tetapi mengapa Anda semua tidak memberi tahu saya bahwa saya harus menambahkan atau mendapatkannya menambahkan alamat ip saya di Remote mySql. kalau tidak, itu tidak akan berhasil. Tolong teman-teman perhatikan ini juga
Jaydeep Goswami
Jika ada yang bekerja pada sistem Apple maka config.inc.phpfile tersebut terletak di Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.phpfile.
Anirudha Mahale
23

Tentu saja mungkin untuk mengakses server MySQL jarak jauh dari instance lokal phpMyAdmin, seperti yang ditunjukkan oleh jawaban lain. Dan agar itu berhasil, Anda harus melakukannya mengonfigurasi server MySQL server jarak jauh untuk menerima koneksi jarak jauh , dan mengizinkan lalu lintas melalui firewall untuk nomor port yang didengar MySQL. Saya lebih suka solusi yang sedikit berbeda yang melibatkan Tunneling SSH .

Perintah berikut akan mengatur terowongan SSH yang akan meneruskan semua permintaan yang dibuat ke port 3307 dari mesin lokal Anda ke port 3306 pada mesin jarak jauh:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

Saat diminta, Anda harus memasukkan kata sandi untuk pengguna root di mesin jarak jauh. Ini akan membuka terowongan. Jika Anda ingin menjalankan ini di latar belakang, Anda harus menambahkan-f argumen, dan mengatur SSH Tanpa Kata Sandi antara mesin lokal Anda dan mesin jarak jauh.

Setelah terowongan SSH berfungsi, Anda dapat menambahkan server jarak jauh ke daftar server di phpMyAdmin lokal Anda dengan memodifikasi /etc/phpmyadmin/config.inc.phpfile. Tambahkan berikut ini ke akhir 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++;

Saya menulis posting blog yang lebih mendalam tentang hal ini, jika Anda membutuhkan bantuan tambahan.

dingin
sumber
1
Saya pikir ini adalah solusi yang aman. Membuka mySQL untuk mengarahkan akses jarak jauh umumnya dianggap sebagai praktik keamanan yang buruk jika tidak mutlak diperlukan.
Omn
1
c.hill jawabannya kurang tepat. Harap dicatat: Alamat bind harus disetel ke alamat simpul di file mysql my.cnf.
Tidak perlu melakukan root pada host jarak jauh. jembatan bekerja dengan sempurna, terima kasih! Saya tidak begitu yakin tentang konfigurasi, lebih suka jawaban Suresh Kamrushi. $++seharusnya menjadi baris pertama, bukan yang terakhir, setidaknya untuk phpmyadmin.conf default saya.
frnhr
Saya hanya menemukan sebuah kasus di mana saya perlu mengubah $ cfg ['Server'] [$ i] ['auth_type'] = 'config'; // simpan sebagai config ke $ cfg ['Servers'] [$ i] ['auth_type'] = 'cookie'; // simpan sebagai konfigurasi. Jadi terima kasih atas tipnya!
Phil Lawlor
Solusi terbaik!
Ghasem Sadeghi
23

Itu bisa dilakukan, tetapi Anda perlu mengubah konfigurasi phpMyAdmin, baca posting ini: http://www.danielmois.com/article/Manage_remote_databases_from_localhost_with_phpMyAdmin

Jika karena alasan apa pun tautan itu mati, Anda dapat menggunakan langkah-langkah berikut:

  • Temukan file konfigurasi phpMyAdmin, bernama config.inc.php
  • Temukan $cfg['Servers'][$i]['host'] variabel, dan atur ke IP atau nama host dari server jauh Anda
  • Temukan $cfg['Servers'][$i]['port']variabel, dan atur ke port mysql jarak jauh. Biasanya ini3306
  • Menemukan $cfg['Servers'][$i]['user']dan $cfg['Servers'][$i]['password']variabel dan mengatur ini untuk username dan password untuk server jauh

Tanpa konfigurasi server yang tepat, koneksi mungkin lebih lambat daripada koneksi lokal misalnya, mungkin akan sedikit lebih cepat menggunakan alamat IP daripada nama host untuk menghindari server harus mencari alamat IP dari nama host.

Selain itu, ingatlah bahwa nama pengguna dan kata sandi basis data jauh Anda disimpan dalam teks biasa saat Anda terhubung seperti ini, jadi Anda harus mengambil langkah-langkah untuk memastikan bahwa tidak ada yang dapat mengakses file konfigurasi ini. Atau, Anda dapat membiarkan variabel nama pengguna dan kata sandi kosong agar diminta memasukkannya setiap kali Anda masuk, yang jauh lebih aman.

Phil Cross
sumber
3
Anda juga harus memiliki firewall pada instance database yang memungkinkan lalu lintas, dan pengguna di server DB dengan hak istimewa untuk akses jarak jauh.
ceejayoz
Bolehkah saya mengajukan pertanyaan di sini? Saat saya pemula, saya ingin tahu apa bentuk tautan yang harus saya masukkan di browser untuk mengakses database melalui phpMyAdmin yang diinstal pada server klien saya yang meng-host situs web sendiri.
Garavani
11

Ikuti posting blog ini. Anda dapat melakukannya dengan sangat mudah. https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/

File config.inc.php berisi pengaturan konfigurasi untuk instalasi phpMyAdmin Anda. Ini menggunakan array untuk menyimpan set opsi konfigurasi untuk setiap server yang dapat terhubung dan secara default hanya ada satu, mesin Anda sendiri, atau localhost. Untuk terhubung ke server lain, Anda harus menambahkan set opsi konfigurasi lain ke array konfigurasi. Anda harus mengedit file konfigurasi ini.

File config.inc.php terbuka pertama diadakan di folder phpMyAdmin . Di server wamp , Anda dapat menemukannya di folder wamp \ apps \ phpmyadmin . Kemudian tambahkan bagian berikut ke file itu.

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

Mari kita lihat apa arti dari variabel-variabel ini.

$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

Setelah menambahkan bagian konfigurasi ini, restart server Anda dan sekarang halaman beranda phpMyAdmin Anda akan berubah dan itu akan menampilkan bidang untuk memilih server.

Sekarang Anda dapat memilih server Anda dan mengakses basis data jauh Anda dengan memasukkan nama pengguna dan kata sandi untuk basis data itu.

Dulanga Sashika
sumber
1
bisa tolong lebih akurat dan jelaskan lebih lanjut tentang jawaban Anda. jawaban tautan baik tetapi mungkin tidak dapat dijangkau jika tautan rusak karena alasan apa pun.
Milad Faridnia
9

Seperti yang dinyatakan dalam jawaban c.hill jawaban, jika Anda menginginkan solusi aman saya akan menyarankan untuk membuka terowongan SSH ke server Anda.

Ini cara untuk melakukannya untuk pengguna Windows :

  1. Unduh Plink and Putty dari situs web Putty dan letakkan file di folder pilihan Anda (Dalam contoh saya C:\Putty)

  2. Buka konsol Windows dan folder cd to Plink: cd C:\Putty

  3. Buka terowongan SSH dan arahkan ke port 3307:

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

Dimana:

  • 3307 adalah port lokal yang ingin Anda redirect
  • localhost adalah alamat dari MySQL DB pada server jarak jauh (localhost secara default)
  • 3306 adalah penggunaan port untuk PhpMyAdmin pada server jarak jauh (3306 secara default)

Akhirnya Anda dapat mengatur PhpMyAdmin:

  1. Tambahkan server jarak jauh ke konfigurasi PhpMyAdmin lokal Anda dengan menambahkan baris berikut di akhir config.inc.php

Baris untuk ditambahkan:

$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. Anda seharusnya dapat terhubung sekarang di http://127.0.0.1/phpmyadmin

Jika Anda tidak ingin membuka konsol setiap kali Anda perlu terhubung ke server jauh, cukup buat file batch (dengan menyimpan 2 baris perintah dalam file .bat).

Yannickv
sumber
6

Anda dapat mengatur file config.inc.php dari instalasi phpMyAdmin Anda.

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

Saya ingin menambahkan ini sebagai komentar, tetapi reputasi saya belum cukup tinggi.

Di bawah versi 4.5.4.1deb2ubuntu2, dan saya menebak versi lain 4.5.x atau lebih baru. Tidak perlu memodifikasi file config.inc.php sama sekali. Alih-alih buka satu direktori lagi conf.d.

Buat file baru dengan ekstensi '.php' dan tambahkan baris. Ini adalah pendekatan termodulasi yang lebih baik dan mengisolasi setiap informasi akses server database jarak jauh.

Ken
sumber
2

Buka file \ phpMyAdmin \ config.inc.php di bagian paling bawah, ubah detail hosting seperti host, nama pengguna, kata sandi, dll.

Patrick R
sumber
2

Di Ubuntu

Hanya Anda perlu memodifikasi satu file dalam folder PHPMyAdmin yaitu "config.inc.php". Cukup tambahkan baris di bawah ini ke "config.inc.php" Anda.

Lokasi file: /var/lib/phpmyadmin/config.inc.phpATAU /etc/phpmyadmin/config.inc.php

Mungkin Anda tidak memiliki izin untuk mengedit file itu, cukup berikan izin menggunakan perintah ini

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

ATAU (dalam sistem yang berbeda Anda mungkin harus memeriksa dengan dua lokasi ini)

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

Kemudian salin dan tempel kode dalam config.inc.phpfile Anda

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

Dan buat perubahan yang sesuai dengan detail server Anda

byteC0de
sumber
1

Metode 1 (untuk multiserver)

Pertama, mari buat cadangan konfigurasi asli.

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

Sekarang di / usr / share / doc / phpmyadmin / example / Anda akan melihat file config.manyhosts.inc.php . Cukup salin ke / etc / phpmyadmin / menggunakan perintah di bawah:

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

Edit config.inc.php

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

Pencarian untuk :

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

Dan tambahkan ip atau hostname array save (di nano CTRL + X tekan Y) dan keluar. Selesai

Metode 2 (server tunggal) Edit config.inc.php

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

Pencarian untuk :

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

Dan ganti dengan:

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

Ingatlah untuk mengganti 192.168.1.100 dengan server ip mysql Anda sendiri.

Maaf untuk bahasa Inggris saya yang buruk (Google translate salahkan: D)

Kornea Valentin
sumber
1

Ketika saya mengujinya Menemukan file config.default.php

kemudian temukan $ cfg ['AllowArbitraryServer'] = false;

kemudian setel ke true

note: di ubuntu file di path /usr/share/phpmyadmin/libraries/config.default.php

maka Anda akan menemukan SERVER nama yang diajukan baru di halaman PHPMyAdmin utama, Anda dapat menambahkannya ke IP atau localhost untuk database lokal.

Mohannd
sumber
0

Di Windows dengan Wamp Server Terinstal, Anda dapat menemukan file konfigurasi

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

Ubah garis sumbu sesuai kebutuhan

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

Hapus entri lengkap dari /etc/http/conf.d/phpMyAdmin.conf

Dan di bawah ini ada dalam file di atas,

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

Kemudian,

jalankan perintah di bawah ini di MySQL prompt,

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

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

Untuk referensi: Izinkan IP untuk Mengakses PhpMyAdmin yang Aman

syed191
sumber