วิธีกำหนดค่า phpMyAdmin เพื่อเข้าถึงเซิร์ฟเวอร์หลายเครื่อง


14

Ubuntu มีวิธีกำหนดค่า phpMyAdmin อย่างไรเพื่อให้ฉันสามารถใช้เพื่อจัดการเซิร์ฟเวอร์ MySQL หลายเครื่อง พารามิเตอร์ฐานข้อมูลถูกตั้งค่าไว้/etc/dbconfig-common/phpmyadmin.confแต่มีที่ว่างสำหรับพารามิเตอร์การเชื่อมต่อสำหรับเซิร์ฟเวอร์เดียวเท่านั้น ฉันสามารถแฮ็คมันเข้าไป/etc/phpmyadmin/config-db.phpและ/etc/phpmyadmin/config.inc.phpแต่ฉันคิดว่ามันต้องมีวิธีที่สวยงามกว่า


คุณเคยพบวิธีแก้ปัญหานี้หรือไม่? คุณแฮ็คเป็นหนึ่งในไฟล์ที่คุณพูดถึงหรือไม่?
Nanne

บทช่วยสอนนี้อธิบายวิธีการจัดการเซิร์ฟเวอร์ MySQL หลายตัวจากการติดตั้ง phpMyAdmin เพื่อเหตุผลด้านความปลอดภัยการสื่อสารระหว่าง phpMyAdmin และเซิร์ฟเวอร์ MySQL ระยะไกลใด ๆ กำลังใช้การเข้ารหัส SSL

คำตอบ:


8

เป็นคำถามที่ค่อนข้างเก่า แต่ก็ยังเกี่ยวข้องกับการค้นหา

phpMyAdmin ใช้ PHP ธรรมดาสำหรับไฟล์$cfg['Servers']กำหนดค่าและอาร์เรย์เพื่อรับเซิร์ฟเวอร์ที่กำหนดค่า

ดังนั้นวิธีที่เหมาะสมคือการเพิ่มไฟล์กำหนดค่าใหม่/etc/phpmyadmin/conf.dสำหรับทุกเซิร์ฟเวอร์ที่คุณต้องการเพิ่ม จำเป็นต้องจบชื่อไฟล์.phpเพื่อรวมไว้ด้วย แต่ควรใช้your_new_server.inc.phpเพื่อความมั่นคง

เนื้อหาขั้นต่ำสำหรับไฟล์ปรับแต่งที่กำหนดคือ:

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

ตามที่ระบุไว้ในคำตอบอื่นคุณสามารถตรวจสอบไฟล์/usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.phpสำหรับพารามิเตอร์เพิ่มเติม

สำคัญ:คุณต้องเพิ่มดัชนี (2) ของอาร์เรย์สำหรับไฟล์ใหม่ทุกไฟล์และหลีกเลี่ยงการใช้ 1 หากคุณต้องการเชื่อมต่อกับ localhost ต่อไป

ถ้าผู้ชายคนนั้นแพคเกจ (s) phpMyAdmin คิดเกี่ยวกับมันพวกเขาสามารถเพิ่ม$iตัวแปรที่เพิ่มขึ้นใน foreach ที่มีไฟล์จากconf.dไดเรกทอรีดังนั้นคุณสามารถใช้มันเป็นดัชนีและไม่ต้องกังวลกับการ เพิ่มด้วยตนเอง แต่น่าเศร้าที่มันไม่ใช่อย่างนั้น คุณสามารถทำได้ด้วยตัวเอง


[2019]:เวอร์ชัน PHP ที่ใหม่กว่าอนุญาตให้ใช้ไวยากรณ์ทางเลือกที่กระชับยิ่งขึ้นนี้:

<?php $cfg['Servers'][] = ['host'=>'my_host', 'user'=>'my_user', 'password'=>'my_pass'];

ฉันพยายามวางเนื้อหาขั้นต่ำไว้ใน /etc/phpmyadmin/conf.d/slaveA.conf.php และเห็นเนื้อหาที่ด้านบนของหน้า PHPMyAdmin เมื่อฉัน catted เนื้อหาเดียวกันนั้นลงในด้านล่างของ config.inc.php มันทำงาน บางสิ่งเกี่ยวกับสิ่งนั้นรวมถึงดูเหมือนว่ามันจะเลอะเทอะ มิฉะนั้นนี่จะเป็นวิธีที่คาดว่าจะสร้างการกำหนดค่าแบบกำหนดเองที่จะไม่ถูกทำลายในการอัปเดต
flickerfly

1
@flickerfly คำตอบที่ล่าช้า แต่โค้ดในไฟล์ปรับแต่งต้องเริ่มต้นด้วย<?phpเช่นเดียวกับสคริปต์ PHP อื่น ๆ
Marc

4

ฉันคิดว่านี่เป็นวิธีที่แม่นยำที่สุดที่จะทำ:

ตั้งค่ารหัสผ่านครั้งแรก:

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

จากนั้นปิดการใช้งานความปลอดภัย:

sudo pma-configure

จากนั้นไปที่http: // yourserver / phpmyadmin / setup (ที่นี่เบราว์เซอร์ขอให้ตรวจสอบผู้ใช้เป็นผู้ดูแลระบบและรหัสผ่านคือสิ่งที่คุณเขียนในคำสั่งแรก) ด้วยตัวช่วยสร้างที่คุณกำหนดค่าเซิร์ฟเวอร์ของคุณเมื่อทำเสร็จแล้ว ความปลอดภัยอีกครั้ง:

sudo pma-secure

ไฟล์กำหนดค่าที่สร้างโดยวิธีนี้จะถูกเก็บไว้ใน /var/lib/phpmyadmin/config.inc.php
Michael Lawton

ไฟล์กำหนดค่าที่สร้างโดยวิธีนี้จะรวมอยู่ในไฟล์กำหนดค่าหลักที่ /etc/phpmyadmin/config.inc.php สคริปต์การตั้งค่า phpMyAdmin เป็นรถในอูบุนตูและไม่โหลดการกำหนดค่าที่มีอยู่ (บังคับให้คุณเริ่มต้นจากขั้นทุกครั้งที่คุณกำหนดค่า) ด้วยการกำหนดค่าที่สร้างรวมถึงสิ่งต่าง ๆ เช่นความลับปักเป้าซึ่งถูกเขียนทับโดยไฟล์กำหนดค่าหลัก คุณจะพบว่าเซิร์ฟเวอร์แรก (1) ถูกเขียนทับโดยไฟล์กำหนดค่าหลักซึ่งใช้ค่าเซิร์ฟเวอร์จาก config-db.php
Michael Lawton

2

ฉันได้สันนิษฐานต่อไปนี้:

  • /etc/phpmyadmin/ จะเป็นสถานที่ที่มีเหตุผลมากที่สุดในการเพิ่มการกำหนดค่า
  • /etc/phpmyadmin/config-db.phpที่ตั้งสำหรับการกำหนดค่าเริ่มต้น (ในเครื่องคืออะไร) นี่คือเนื่องจากเป็นค่าเริ่มต้นหนึ่งฐานข้อมูลเท่านั้น
  • /etc/phpmyadmin/config.inc.phpอ่านฐานข้อมูลเริ่มต้นเพื่อให้มีหนึ่ง อย่างน้อยอันนี้จะถูกใช้ดังนั้นคุณมีฐานข้อมูล หากมีการเปลี่ยนแปลงบางอย่างในการกำหนดค่าของคุณการconfig-db.phpเปลี่ยนแปลงจะถูกเปลี่ยนดังนั้นการเปลี่ยนแปลง 'ท้องถิ่น' ในไฟล์ของคุณจะไม่ถูกแก้ไข

ดังนั้นข้อสรุปของฉันคือการเพิ่มเซิร์ฟเวอร์พิเศษด้านล่างส่วนนี้:

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

ดูเหมือนสถานที่ที่ดีที่สุด


1

ตามเอกสาร phpMyAdmin คุณสามารถกำหนดเซิร์ฟเวอร์หลายเครื่องใน$cfg['Servers']อาร์เรย์ที่กำหนดไว้ในconfig.inc.phpไฟล์


2
ในการติดตั้ง phpMyAdmin ทั่วไปใช่ แต่ Ubuntu มีไฟล์กำหนดค่าของตัวเองเพื่อสร้างส่วนนั้นของไฟล์ config.inc.php และฉันต้องการทราบวิธีการตั้งค่าของ Ubuntu โดยไม่ต้องยกเลิกการตั้งค่าของ Ubuntu
Mike Scott

ฉันเห็น. You can regenerate it using: dpkg-reconfigure -plow phpmyadminความเห็นในไฟล์พูด ฉันคิดว่าคุณลองมันเหรอ? (จะไม่ทำในระบบการผลิตทันที) นอกเหนือจากนั้น ... ไฟล์ที่เปลี่ยนแปลงด้วยตนเองควรได้รับแจ้งในการอัพเดตก่อนที่จะถูกเขียนทับ
Carsten Thiel

2
ใช่ฉันสามารถสร้างไฟล์ config-db.php ใหม่ได้ แต่ไฟล์กำหนดค่าซึ่งเป็นแหล่งที่มาของพารามิเตอร์การเชื่อมต่อฐานข้อมูล ฉันต้องการทราบวิธีกำหนดค่าเซิร์ฟเวอร์ฐานข้อมูลมากกว่าหนึ่งแห่ง
Mike Scott

+ Mike Scott ฉันไม่สามารถรับ $ cfg ['เซิร์ฟเวอร์'] เพื่อทำงานในไฟล์ conf.d / แต่เมื่อฉันวางไว้ใน config.inc.php มันใช้งานได้ดี ฉันคิดว่ามีข้อผิดพลาดบางอย่างที่คำสั่ง include รวมยุ่งกับมัน
flickerfly

1

/etc/phpmyadmin/config.inc.phpแฟ้มการกำหนดค่าหลักถูกเก็บไว้ใน ไฟล์นี้รวมถึง

  • ความลับปักเป้าจาก /var/lib/phpmyadmin/blowfish_secret.inc.php
  • สร้างการกำหนดค่าจากสคริปต์การตั้งค่า phpMyAdmin (วิธีการของ diegueus9) /var/lib/phpmyadmin/config.inc.php
  • ค่า DB จาก /etc/phpmyadmin/config-db.phpที่ถูกสร้างขึ้นจากจาก/etc/dbconfig-common/phpmyadmin.conf สามารถแก้ไขได้โดยใช้/usr/sbin/dbconfig-generate-include/etc/dbconfig-common/phpmyadmin.confdpkg-reconfigure -plow phpmyadmin
  • ไฟล์การกำหนดค่าเพิ่มเติมจาก /etc/phpmyadmin/conf.d/*.php

บางตัวอย่างเช่นการกำหนดค่าอยู่ในรวมทั้ง/usr/share/doc/phpmyadmin/examples ไฟล์นี้สามารถเพิ่มไปยังconfig.manyhosts.inc.php /etc/phpmyadmin/conf.dมันทำงานโดยการรีเซ็ตiกลับตัวแปร 1 ก่อนที่จะสร้างโฮสต์ใด ๆ /etc/phpmyadmin/config.inc.phpเพื่อที่จะแทนที่ชุดโฮสต์ใน

หากคุณต้องการที่จะทำการกำหนดค่าที่สูงขึ้นคุณอาจจะต้องการที่จะเปลี่ยน/etc/phpmyadmin/config.inc.phpไฟล์และอาจเพิ่มส่วนขยายการกำหนดค่าอื่น ๆ /etc/phpmyadmin/conf.dที่ใช้

หากต้องการเพิ่มการสนับสนุนสำหรับการกำหนดค่าเพิ่มเติมสำหรับไฟล์การกำหนดค่าที่เก่ากว่าคุณสามารถสร้างไดเรกทอรี/etc/phpmyadmin/conf.dแล้วเพิ่มรหัส PHP ด้านล่างที่ด้านล่างของ/etc/phpmyadmin/config.inc.php:

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.