จะเข้าถึงเซิร์ฟเวอร์ระยะไกลด้วยไคลเอนต์ phpMyAdmin ภายในได้อย่างไร


138

สมมติว่ามีเซิร์ฟเวอร์ระยะไกลและฉันมีไคลเอนต์ phpMyAdmin ติดตั้ง localy บนคอมพิวเตอร์ของฉัน ฉันจะเข้าถึงเซิร์ฟเวอร์นี้และจัดการผ่านไคลเอนต์ phpMyAdmin ได้อย่างไร? เป็นไปได้หรือไม่


1
คุณยังสามารถติดตั้งphpmyadminอิมเมจนักเทียบท่าในเครื่องและเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระยะไกลของคุณ รายละเอียดเพิ่มเติมได้ที่นี่ :docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
เสี่ยว

คำตอบ:


180

เพียงเพิ่มบรรทัดด้านล่างลง/etc/phpmyadmin/config.inc.phpในไฟล์ของคุณที่ด้านล่าง:

$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

. คุณจะได้รับ“ เซิร์ฟเวอร์ปัจจุบัน:” แบบเลื่อนลงพร้อมทั้ง“ 127.0.0.1” และอีกหนึ่งสิ่งที่คุณให้มาพร้อมกับ“ $ cfg ['เซิร์ฟเวอร์'] [$ i] ['โฮสต์']” สลับไปมาระหว่างเซิร์ฟเวอร์

รายละเอียดเพิ่มเติม: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/


17
เป็นจุดสำคัญเช่นนี้จะไม่ทำให้เราสูญเสียการเชื่อมต่อกับฐานข้อมูลเริ่มต้น$i++ localhost
Gaurav Ramanan

ฉันต้องทำตามขั้นตอนในโพสต์นี้หลังจากตั้งค่าใน phpMyAdmin เพื่อให้ใช้งานได้
Ahmed Akhtar

2
/etc/phpmyadmin/config.inc.phpเป็นไฟล์ที่ถูกต้องที่จะเปลี่ยน
เสี่ยว

วิธีการข้างต้นนั้นถูกต้อง แต่ทำไมคุณทุกคนไม่บอกฉันว่าฉันจะต้องเพิ่มหรือทำให้มันเพิ่มที่อยู่ IP ของฉันใน Remote mySql มิฉะนั้นมันจะไม่ทำงาน. โปรดทราบสิ่งนี้ด้วย
Jaydeep Goswami

หากใครทำงานบนระบบ Apple config.inc.phpไฟล์นั้นจะอยู่ที่ Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.phpไฟล์
Anirudha Mahale

24

สามารถทำได้ แต่คุณต้องเปลี่ยนการกำหนดค่า phpMyAdmin อ่านโพสต์นี้: http://www.danielmois.com/article/Manage_remote_databases_from_localhost_with_phpMyAdmin

หากลิงก์ตายไม่ว่าด้วยเหตุผลใดก็ตามคุณสามารถใช้ขั้นตอนต่อไปนี้:

  • ค้นหาไฟล์กำหนดค่าของ phpMyAdmin ที่เรียกว่า config.inc.php
  • ค้นหา$cfg['Servers'][$i]['host']ตัวแปรและตั้งค่าเป็น IP หรือชื่อโฮสต์ของเซิร์ฟเวอร์ระยะไกลของคุณ
  • ค้นหา$cfg['Servers'][$i]['port']ตัวแปรและตั้งค่าเป็นพอร์ต mysql ระยะไกล โดยปกติจะเป็น3306
  • ค้นหา$cfg['Servers'][$i]['user']และ$cfg['Servers'][$i]['password']ตัวแปรและการตั้งค่าเหล่านี้ไปยังชื่อผู้ใช้และรหัสผ่านสำหรับเซิร์ฟเวอร์ระยะไกล

หากไม่มีการกำหนดค่าเซิร์ฟเวอร์ที่เหมาะสมการเชื่อมต่ออาจช้ากว่าการเชื่อมต่อภายในเครื่องอาจใช้ที่อยู่ IP แทนชื่อโฮสต์ได้เร็วกว่าเล็กน้อยเพื่อหลีกเลี่ยงไม่ให้เซิร์ฟเวอร์ต้องค้นหาที่อยู่ IP จากชื่อโฮสต์

นอกจากนี้โปรดจำไว้ว่าชื่อผู้ใช้และรหัสผ่านของฐานข้อมูลระยะไกลของคุณจะถูกเก็บไว้ในข้อความธรรมดาเมื่อคุณเชื่อมต่อเช่นนี้ดังนั้นคุณควรดำเนินการเพื่อให้แน่ใจว่าไม่มีใครสามารถเข้าถึงไฟล์กำหนดค่านี้ได้ หรือคุณสามารถปล่อยตัวแปรชื่อผู้ใช้และรหัสผ่านว่างไว้เพื่อให้ป้อนทุกครั้งที่เข้าสู่ระบบซึ่งปลอดภัยกว่ามาก


3
คุณต้องมีไฟร์วอลล์บนอินสแตนซ์ฐานข้อมูลที่อนุญาตให้รับส่งข้อมูลและผู้ใช้บนเซิร์ฟเวอร์ DB ที่มีสิทธิ์สำหรับการเข้าถึงระยะไกล
ceejayoz

ฉันขอถามคำถามที่นี่ได้ไหม เนื่องจากฉันเป็นมือใหม่ฉันอยากรู้ว่าควรใช้ลิงก์ในรูปแบบใดฉันต้องการเข้าสู่เบราว์เซอร์เพื่อเข้าถึงฐานข้อมูลผ่าน phpMyAdmin ที่ติดตั้งบนเซิร์ฟเวอร์ของลูกค้าของฉันที่โฮสต์เว็บไซต์ด้วยตนเอง
Garavani

23

เป็นไปได้อย่างแน่นอนที่จะเข้าถึงเซิร์ฟเวอร์ MySQL ระยะไกลจากอินสแตนซ์ท้องถิ่นของ phpMyAdmin ตามที่คำตอบอื่น ๆ ได้ระบุไว้ และเพื่อให้ใช้งานได้คุณต้องกำหนดค่าเซิร์ฟเวอร์ MySQL ของเซิร์ฟเวอร์ระยะไกลเพื่อยอมรับการเชื่อมต่อระยะไกลและอนุญาตการรับส่งข้อมูลผ่านไฟร์วอลล์สำหรับหมายเลขพอร์ตที่ MySQL กำลังรับฟัง ฉันชอบการแก้ปัญหาที่แตกต่างกันเล็กน้อยที่เกี่ยวข้องกับSSH อุโมงค์

คำสั่งต่อไปนี้จะตั้งค่าอุโมงค์ SSH ซึ่งจะส่งต่อคำขอทั้งหมดที่ส่งไปยังพอร์ต 3307 จากเครื่องโลคัลของคุณไปยังพอร์ต 3306 บนเครื่องระยะไกล:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

เมื่อได้รับแจ้งคุณควรป้อนรหัสผ่านสำหรับผู้ใช้ root บนเครื่องระยะไกล เพื่อเปิดอุโมงค์ หากคุณต้องการเรียกใช้สิ่งนี้ในพื้นหลังคุณจะต้องเพิ่ม-fอาร์กิวเมนต์และตั้งค่าSSH แบบไม่มีรหัสผ่านระหว่างเครื่องในระบบของคุณและเครื่องระยะไกล

หลังจากที่คุณได้ SSH tunnel ทำงานแล้วคุณสามารถเพิ่มเซิร์ฟเวอร์ระยะไกลไปยังรายการเซิร์ฟเวอร์ใน phpMyAdmin ในเครื่องของคุณได้โดยการแก้ไข/etc/phpmyadmin/config.inc.phpไฟล์ เพิ่มสิ่งต่อไปนี้ที่ส่วนท้ายของไฟล์:

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

ฉันเขียนบล็อกโพสต์เชิงลึกเกี่ยวกับเรื่องนี้ในกรณีที่คุณต้องการความช่วยเหลือเพิ่มเติม


2
ฉันคิดว่านี่เป็นโซลูชันที่ปลอดภัย การเปิด mySQL เพื่อเข้าถึงโดยตรงจากระยะไกลถือเป็นการปฏิบัติด้านความปลอดภัยที่ไม่ดีหากไม่จำเป็นจริงๆ
ถึง

1
คำตอบของ c.hill ไม่ถูกต้องนัก โปรดทราบ: ต้องตั้งค่าที่อยู่ผูกเป็นที่อยู่ย้อนกลับในไฟล์ mysql my.cnf

ไม่จำเป็นต้องรูทบนโฮสต์ระยะไกล สะพานทำงานได้อย่างสมบูรณ์ขอบคุณ! ฉันไม่ค่อยแน่ใจเกี่ยวกับ config แต่ชอบคำตอบของ Suresh Kamrushi มากกว่า $++ควรเป็นบรรทัดแรกไม่ใช่สุดท้ายอย่างน้อยสำหรับ phpmyadmin.conf เริ่มต้นของฉัน
frnhr

ฉันเพิ่งเจอกรณีที่ฉันต้องการเปลี่ยน $ cfg ['Servers'] [$ i] ['auth_type'] = 'config'; // เก็บไว้เป็น config to $ cfg ['Servers'] [$ i] ['auth_type'] = 'cookie'; // เก็บไว้เป็น config. ขอบคุณสำหรับเคล็ดลับนั้น!
Phil Lawlor

ทางออกที่ดีที่สุด!
Ghasem Sadeghi

11

ติดตามบล็อกโพสต์นี้ คุณสามารถทำได้ง่ายมาก https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/

ไฟล์config.inc.phpมีการตั้งค่าคอนฟิกสำหรับการติดตั้ง phpMyAdmin ของคุณ ใช้อาร์เรย์เพื่อจัดเก็บชุดตัวเลือกการกำหนดค่าสำหรับทุกเซิร์ฟเวอร์ที่สามารถเชื่อมต่อได้และโดยค่าเริ่มต้นจะมีเพียงเครื่องเดียวคือเครื่องของคุณเองหรือ localhost ในการเชื่อมต่อกับเซิร์ฟเวอร์อื่นคุณจะต้องเพิ่มชุดตัวเลือกการกำหนดค่าอื่นในอาร์เรย์การกำหนดค่า คุณต้องแก้ไขไฟล์คอนฟิกูเรชันนี้

เปิดไฟล์config.inc.phpก่อนในโฟลเดอร์phpMyAdmin ในเซิร์ฟเวอร์wampคุณสามารถค้นหาได้ในโฟลเดอร์wamp \ apps \ phpmyadmin จากนั้นเพิ่มส่วนต่อไปนี้ลงในไฟล์นั้น

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

มาดูกันว่าความหมายของตัวแปรนี้คืออะไร

$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

หลังจากเพิ่มส่วนกำหนดค่านี้แล้วให้รีสตาร์ทเซิร์ฟเวอร์ของคุณและตอนนี้โฮมเพจ phpMyAdmin ของคุณจะเปลี่ยนไปและจะแสดงฟิลด์ให้เลือกเซิร์ฟเวอร์

ตอนนี้คุณสามารถเลือกเซิร์ฟเวอร์ของคุณและเข้าถึงฐานข้อมูลระยะไกลของคุณได้โดยป้อนชื่อผู้ใช้และรหัสผ่านสำหรับฐานข้อมูลนั้น


1
กรุณาช่วยให้ถูกต้องมากขึ้นและอธิบายเพิ่มเติมเกี่ยวกับคำตอบของคุณ คำตอบของลิงก์นั้นดี แต่อาจไม่สามารถเข้าถึงได้หากลิงก์เสียหายไม่ว่าด้วยเหตุผลใดก็ตาม
Milad Faridnia

9

ตามที่ระบุไว้ในคำตอบc.hill answer หากคุณต้องการโซลูชันที่ปลอดภัยฉันขอแนะนำให้เปิดอุโมงค์ SSH ไปยังเซิร์ฟเวอร์ของคุณ

นี่คือวิธีการสำหรับผู้ใช้Windows :

  1. ดาวน์โหลด Plink and Putty จากเว็บไซต์ Puttyและวางไฟล์ในโฟลเดอร์ที่คุณเลือก (ในตัวอย่างของฉันC:\Putty)

  2. เปิดคอนโซล Windows และซีดีไปยังโฟลเดอร์ Plink: cd C:\Putty

  3. เปิดอุโมงค์ SSH และเปลี่ยนเส้นทางไปยังพอร์ต 3307:

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

ที่ไหน:

  • 3307 คือพอร์ตภายในที่คุณต้องการเปลี่ยนเส้นทางไป
  • localhost คือที่อยู่ของ MySQL DB บนเซิร์ฟเวอร์ระยะไกล (localhost โดยค่าเริ่มต้น)
  • 3306 เป็นพอร์ตที่ใช้สำหรับ PhpMyAdmin บนเซิร์ฟเวอร์ระยะไกล (3306 โดยค่าเริ่มต้น)

ในที่สุดคุณก็สามารถตั้งค่า PhpMyAdmin:

  1. เพิ่มเซิร์ฟเวอร์ระยะไกลไปยังคอนฟิกูเรชัน PhpMyAdmin ภายในเครื่องของคุณโดยเพิ่มบรรทัดต่อไปนี้ที่ส่วนท้ายของconfig.inc.php

เส้นที่จะเพิ่ม:

$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. คุณควรจะเชื่อมต่อได้แล้วที่ http://127.0.0.1/phpmyadmin

หากคุณไม่ต้องการเปิดคอนโซลทุกครั้งที่คุณต้องเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลเพียงสร้างไฟล์แบตช์ (โดยบันทึก 2 บรรทัดคำสั่งในไฟล์. bat)


6

คุณสามารถตั้งค่าในไฟล์ config.inc.php ของการติดตั้ง phpMyAdmin ของคุณ

$cfg['Servers'][$i]['host'] = '';

5

ฉันจะเพิ่มสิ่งนี้เป็นความคิดเห็น แต่ชื่อเสียงของฉันยังไม่สูงพอ

ภายใต้เวอร์ชัน 4.5.4.1deb2ubuntu2 และฉันคาดเดาเวอร์ชันอื่น ๆ 4.5.x หรือใหม่กว่า ไม่จำเป็นต้องแก้ไขไฟล์ config.inc.php เลย ให้ไปที่ไดเรกทอรีเพิ่มอีกหนึ่งรายการแทน d.

สร้างไฟล์ใหม่ด้วยนามสกุล ".php" และเพิ่มบรรทัด นี่เป็นวิธีการแบบแยกส่วนที่ดีกว่าและแยกข้อมูลการเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลระยะไกลแต่ละตัว


2

ไปที่ไฟล์ \ phpMyAdmin \ config.inc.php ที่ด้านล่างสุดเปลี่ยนรายละเอียดโฮสติ้งเช่นโฮสต์ชื่อผู้ใช้รหัสผ่านเป็นต้น


2

ใน Ubuntu

เพียงแค่คุณต้องแก้ไขไฟล์เดียวในโฟลเดอร์ PHPMyAdmin เช่น“ config.inc.php” เพียงเพิ่มบรรทัดด้านล่างใน“ config.inc.php” ของคุณ

ตำแหน่งไฟล์: /var/lib/phpmyadmin/config.inc.phpหรือ /etc/phpmyadmin/config.inc.php

บางทีคุณอาจไม่มีสิทธิ์แก้ไขไฟล์นั้นเพียงแค่ให้สิทธิ์โดยใช้คำสั่งนี้

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

หรือ (ในระบบที่ต่างกันคุณอาจต้องตรวจสอบกับสถานที่ทั้งสองแห่งนี้)

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

จากนั้นคัดลอกและวางรหัสในconfig.inc.phpไฟล์ของคุณ

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

และทำการเปลี่ยนแปลงที่เหมาะสมกับรายละเอียดเซิร์ฟเวอร์ของคุณ


2

วิธีที่ 1 (สำหรับ multiserver)

ก่อนอื่นให้ทำการสำรองข้อมูลของ config ดั้งเดิม

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

ตอนนี้ใน/ usr / share / doc / phpMyAdmin / ตัวอย่าง /คุณจะเห็นไฟล์config.manyhosts.inc.php เพียงแค่คัดลอกไปที่/ etc / phpmyadmin / โดยใช้คำสั่ง bellow:

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

แก้ไขconfig.inc.php

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

ค้นหา :

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

และเพิ่ม IP หรืออาร์เรย์ชื่อโฮสต์ของคุณบันทึก (ใน nano CTRL + X กด Y) และออก เสร็จแล้ว

วิธีที่ 2 (เซิร์ฟเวอร์เดียว) แก้ไขconfig.inc.php

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

ค้นหา :

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

และแทนที่ด้วย:

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

อย่าลืมแทนที่192.168.1.100 ด้วยเซิร์ฟเวอร์ mysql ip ของคุณเอง

ขออภัยสำหรับภาษาอังกฤษที่ไม่ดีของฉัน (Google แปลมีตำหนิ: D)


2

ค้นหาไฟล์libraries / config.default.php

จากนั้นหา $ cfg ['AllowArbitraryServer'] = false;

จากนั้นตั้งค่าเป็นจริง

บันทึก:

บนอูบุนตูไฟล์ในพา ธ/usr/share/phpmyadmin/libraries/config.default.php

จากนั้นคุณจะพบชื่อไฟล์ใหม่ SERVER ในหน้า PHPMyAdmin หลักคุณสามารถเพิ่ม IP หรือ localhost สำหรับฐานข้อมูลภายในเครื่องได้


0

ใน Windows ที่ติดตั้ง Wamp Server คุณอาจพบไฟล์การกำหนดค่า

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

เปลี่ยนสายสลักตามความเหมาะสม

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

-1

ลบรายการทั้งหมดของ /etc/http/conf.d/phpMyAdmin.conf

และด้านล่างเข้าสู่ไฟล์ด้านบน

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

จากนั้น

เรียกใช้คำสั่งด้านล่างในพรอมต์ MySQL

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

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

สำหรับการอ้างอิง: อนุญาตให้ IP เข้าถึง PhpMyAdmin ที่ปลอดภัย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.