Bagaimana cara mengkonfigurasi phpMyAdmin untuk mengakses beberapa server?

13

Apa cara Ubuntu untuk mengkonfigurasi phpMyAdmin sehingga saya dapat menggunakannya untuk mengelola beberapa server MySQL? Parameter basis data diatur /etc/dbconfig-common/phpmyadmin.conf, tetapi hanya ada ruang di sana untuk parameter koneksi untuk satu server. Saya bisa meretasnya /etc/phpmyadmin/config-db.phpdan /etc/phpmyadmin/config.inc.php, tapi saya berasumsi harus ada cara yang lebih elegan.

Mike Scott
sumber
Pernahkah Anda menemukan solusi untuk melakukan ini? Apakah Anda meretas ke salah satu file yang Anda sebutkan, atau tidak?
Nanne
Tutorial ini menjelaskan bagaimana Anda dapat mengelola beberapa server MySQL dari satu instalasi phpMyAdmin. Untuk alasan keamanan, komunikasi antara phpMyAdmin dan server MySQL jarak jauh menggunakan enkripsi SSL

Jawaban:

8

Pertanyaan yang cukup lama, tetapi masih relevan pada pencarian.

phpMyAdmin menggunakan PHP biasa untuk file konfigurasi, dan $cfg['Servers']array untuk mendapatkan server yang dikonfigurasi.

Jadi cara yang tepat adalah menambahkan file konfigurasi baru /etc/phpmyadmin/conf.duntuk setiap server yang ingin Anda tambahkan. Ini hanya diperlukan untuk mengakhiri nama file .phpagar disertakan, tetapi sebaiknya gunakan your_new_server.inc.phpkonsistensi.

Konten minimal untuk file konfigurasi yang diberikan adalah:

<?php // let the interpreter know this is code
$cfg['Servers'][2]['host']     = 'THE_HOST';
$cfg['Servers'][2]['user']     = 'THE_USER';
$cfg['Servers'][2]['password'] = 'THE_PASSWORD';

Seperti yang dinyatakan dalam jawaban lain, Anda dapat memeriksa file /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php untuk parameter lainnya.

Penting: Anda harus meningkatkan indeks (2) dari array untuk setiap file baru, dan menghindari penggunaan 1 jika Anda ingin tetap terhubung ke localhost.

Jika orang yang dipaketkan oleh phpMyAdmin, mereka bisa menambahkan $ivariabel tambahan di foreach yang menyertakan file-file dari conf.ddirektori, jadi Anda bisa menggunakannya sebagai indeks dan tidak perlu khawatir harus tingkatkan secara manual, tapi sayangnya bukan itu masalahnya. Anda dapat melakukannya sendiri.


[2019]: Versi PHP yang lebih baru memungkinkan sintaks alternatif yang lebih ringkas ini:

<?php $cfg['Servers'][] = ['host'=>'my_host', 'user'=>'my_user', 'password'=>'my_pass'];
Marc
sumber
Saya mencoba meletakkan konten minimal yang tercantum di /etc/phpmyadmin/conf.d/slaveA.conf.php dan cukup melihat konten di bagian atas halaman PHPMyAdmin. Ketika saya memasukkan konten yang sama ke bagian bawah config.inc.php berhasil. Sesuatu tentang itu termasuk tampaknya mengacaukannya. Jika tidak, ini sepertinya cara yang diharapkan untuk membuat konfigurasi khusus yang tidak akan terbunuh dalam pembaruan.
flickerfly
1
@ flickerfly, jawaban terlambat tetapi kode dalam file konfigurasi harus dimulai dengan <?php, seperti skrip PHP lainnya.
Marc
4

Saya pikir ini adalah cara paling akurat untuk melakukannya:

Pertama-tama, atur kata sandi:

sudo htpasswd -c /etc/phpmyadmin/htpasswd.setup admin

Kemudian nonaktifkan keamanan:

sudo pma-configure

Kemudian pergi ke http: // server Anda / phpmyadmin / setup (di sini browser meminta auth, pengguna adalah admin dan kata sandi adalah apa yang Anda tulis dalam perintah pertama), dengan wizard yang Anda konfigurasikan server Anda, setelah selesai, letakkan keamanan lagi:

sudo pma-secure
diegueus9
sumber
File config yang dihasilkan oleh metode ini disimpan di /var/lib/phpmyadmin/config.inc.php.
Michael Lawton
File konfigurasi ini dihasilkan oleh metode ini kemudian dimasukkan dalam file konfigurasi utama di /etc/phpmyadmin/config.inc.php. Script setup phpMyAdmin buggy di Ubuntu dan tidak memuat konfigurasi yang ada (memaksa Anda untuk memulai dari awal setiap kali Anda mengkonfigurasinya). Juga konfigurasi yang dihasilkannya termasuk hal-hal seperti rahasia blowfish yang kemudian ditimpa oleh file konfigurasi utama. Anda akan menemukan bahwa server pertama (1) ditimpa oleh file konfigurasi utama, yang menggunakan nilai server dari config-db.php.
Michael Lawton
2

Saya telah mengasumsikan sebagai berikut:

  • /etc/phpmyadmin/ akan menjadi tempat paling logis untuk menambahkan konfigurasi
  • /etc/phpmyadmin/config-db.phpapakah lokasi untuk konfigurasi default (lokal?). Ini, karena ini adalah default, hanya satu db
  • /etc/phpmyadmin/config.inc.phpmembaca database default sehingga memiliki satu. Setidaknya yang ini digunakan, jadi Anda punya database. Jika ada sesuatu yang berubah di konfigurasi Anda, config-db.phpitu diubah, jadi perubahan 'lokal' ke file Anda tidak diubah

Oleh karena itu kesimpulan saya adalah menambahkan server tambahan di bawah bagian ini:

/* Configure according to dbconfig-common if enabled */
if (!empty($dbname)) {
    //reading from config-db.php
}

//$i++ was allready done in if above
//Adding extra servers
 $cfg['Servers'][$i]['host'] = 'serverhost.host.tld';
 $cfg['Servers'][$i]['extension'] = 'mysqli';
//...etc

Ini sepertinya tempat terbaik.

Nanne
sumber
1

Menurut dokumentasi phpMyAdmin Anda dapat menentukan beberapa server dalam $cfg['Servers']array yang ditentukan dalam config.inc.phpfile.

Carsten Thiel
sumber
2
Dalam instal phpMyAdmin generik, ya. Tetapi Ubuntu memiliki file konfigurasi sendiri untuk menghasilkan bagian dari file config.inc.php, dan saya ingin tahu cara Ubuntu untuk mengkonfigurasinya, tanpa harus menimpa konfigurasi Ubuntu.
Mike Scott
Saya melihat. Komentar dalam file mengatakan You can regenerate it using: dpkg-reconfigure -plow phpmyadmin. Saya menganggap Anda sudah mencobanya? (tidak akan melakukannya pada sistem produksi sekarang) Selain itu ... file yang diubah secara manual harus diminta pada pembaruan sebelum ditimpa.
Carsten Thiel
2
Ya, saya dapat membuat kembali file config-db.php, tetapi file config yang darinya sumber parameter koneksi database (/etc/dbconfig-common/phpmyadmin.conf) hanya memiliki ruang untuk mengkonfigurasi satu server database. Saya ingin tahu cara mengkonfigurasi lebih dari satu server basis data.
Mike Scott
+ Mike Scott, saya tidak bisa mendapatkan $ cfg ['Server'] untuk bekerja di conf.d / file, tetapi ketika saya meletakkannya di config.inc.php itu berfungsi dengan baik. Saya pikir ada beberapa bug yang pernyataannya mengacaukannya.
flickerfly
1

File konfigurasi utama disimpan di /etc/phpmyadmin/config.inc.php. File ini termasuk

  • Rahasia Blowfish dari /var/lib/phpmyadmin/blowfish_secret.inc.php
  • Konfigurasi yang dihasilkan dari skrip pengaturan phpMyAdmin (metode diegueus9) /var/lib/phpmyadmin/config.inc.php
  • Nilai DB dari /etc/phpmyadmin/config-db.phpmana dihasilkan /etc/dbconfig-common/phpmyadmin.confoleh oleh /usr/sbin/dbconfig-generate-include. /etc/dbconfig-common/phpmyadmin.confdapat dimodifikasi menggunakandpkg-reconfigure -plow phpmyadmin
  • File konfigurasi ekstra dari /etc/phpmyadmin/conf.d/*.php

Beberapa contoh cuplikan konfigurasi /usr/share/doc/phpmyadmin/examplestermasuk config.manyhosts.inc.php. File ini dapat ditambahkan ke /etc/phpmyadmin/conf.d. Ia bekerja dengan mengatur ulang ivariabel kembali ke 1 sebelum membuat host apa pun sehingga menimpa set host /etc/phpmyadmin/config.inc.php.

Jika Anda ingin melakukan konfigurasi lebih lanjut, Anda mungkin ingin mengubah /etc/phpmyadmin/config.inc.phpfile dan mungkin menambahkan ekstensi konfigurasi lainnya menggunakan /etc/phpmyadmin/conf.d.

Untuk menambahkan dukungan untuk konfigurasi tambahan ke file konfigurasi yang lebih lama, Anda dapat membuat direktori /etc/phpmyadmin/conf.ddan kemudian menambahkan kode PHP di bawah ini ke bagian bawah /etc/phpmyadmin/config.inc.php:

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
Michael Lawton
sumber