“ การเชื่อมต่อสำหรับ controluser ตามที่กำหนดไว้ในการกำหนดค่าของคุณล้มเหลว” ด้วย phpMyAdmin ใน XAMPP


127

ฉันเพิ่งติดตั้ง XAMPP บนเครื่อง Windows XP ของฉันและฉันพบข้อผิดพลาดว่า:

การเชื่อมต่อสำหรับ controluser ตามที่กำหนดไว้ในการกำหนดค่าของคุณล้มเหลว

ก่อนที่ฉันจะติดตั้ง XAMPP ฉันมีฐานข้อมูล MySQL ติดตั้งและมีรหัสผ่าน ฉันเปลี่ยนและใส่รหัสผ่านใน config.inc.php สำหรับ MySQL และฉันได้รับข้อผิดพลาดนี้:

<?php
if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
    $uri = 'https://';
} else {
    $uri = 'http://';
}
$uri .= $_SERVER['HTTP_HOST'];
header('Location: '.$uri.'/xampp/');
exit;
?>

เมื่อฉันพยายามเข้าถึง index.php ดูเหมือนว่ามีบางอย่างผิดปกติกับการติดตั้ง XAMPP ฉันจะแก้ไขปัญหานี้ได้อย่างไร


19
IMHO คำถามประเภทนี้ค่อนข้างบ่อยและเสียเวลามากในการแก้ไขปัญหานอกจากนี้ด้วย "ขอบเขตของปัญหาที่กำหนด" ซึ่งเป็นที่ถกเถียงกันถ้าเราสามารถใส่เควสต์ดังกล่าวภายใต้ "เครื่องมือที่นิยมใช้โดยโปรแกรมเมอร์" หรือ "เป็น ปัญหาที่เกิดขึ้นจริงและตอบได้ซึ่งเป็นเอกลักษณ์ของการพัฒนาที่อ่อนนุ่ม "ดังนั้นฉันจึงขอให้ทหารผ่านศึก SO พิจารณาโพสต์อย่างระมัดระวังก่อนที่จะทำเครื่องหมายว่า" ปิดหัวข้อ " SO กลายเป็นปลายทางที่เชื่อถือได้และครบวงจรในการรับปัญหาการเขียนโปรแกรมจากผู้ที่ต้องเผชิญและแก้ไข ดังนั้นมันจะมีประโยชน์สำหรับผู้เขียนโปรแกรมที่จะได้คำตอบที่แน่นอนมากกว่าการค้นหาที่อื่นเพื่อหาปัญหาดังกล่าว
เด็กซ์เตอร์

คำตอบ:


243
  1. เปิด phpMyAdmin ในเบราว์เซอร์และเข้าสู่ระบบในฐานะ root
  2. สร้างฐานข้อมูลที่เรียกว่า phpmyadmin
  3. สร้างผู้ใช้ที่เรียกว่าpmaและตั้งค่า "โฮสต์" เป็นชื่อโฮสต์หรือที่อยู่ IP ของเว็บเซิร์ฟเวอร์ของคุณ (หากเว็บเซิร์ฟเวอร์และ MySQL ใช้งานกล่องเดียวกันlocalhost) จดบันทึกรหัสผ่านและให้ผู้ใช้ใหม่ควบคุมเต็มรูปแบบphpmyadminฐานข้อมูล ขอแนะนำให้ผู้ใช้รายนี้ไม่สามารถเข้าถึงสิ่งอื่นใดนอกจากฐานข้อมูลนี้
  4. ไปที่ไดเรกทอรีการติดตั้ง phpMyAdmin sqlที่คุณควรจะหาไดเรกทอรีย่อยที่เรียกว่า
  5. ในคุณจะพบไฟล์ที่เรียกว่าsql create_tables.sqlเปิดในโปรแกรมแก้ไขข้อความ
  6. ใน phpMyAdmin เลือกphpmyadminฐานข้อมูลและคลิกที่แท็บ "SQL"
  7. คัดลอก / วางข้อความทั้งหมดจากcreate_tables.sqlลงในกล่องข้อความและเรียกใช้แบบสอบถาม
  8. เปิดconfig.inc.phpไฟล์ในไดเร็กทอรีการติดตั้ง phpMyAdmin และเพิ่มบรรทัดต่อไปนี้ (หรือเปลี่ยนการตั้งค่าที่มีอยู่หากมีอยู่แล้ว):

    $cfg['Servers'][1]['pmadb'] = 'phpmyadmin';
    $cfg['Servers'][1]['controluser'] = 'pma';
    $cfg['Servers'][1]['controlpass'] = '<your password>';
    
    // Note: The list below may grow as PMA evolves and more control tables are added
    // Use your common sense! Don't just blindly copypasta, look at what it means!
    $cfg['Servers'][1]['bookmarktable'] = 'pma_bookmark';
    $cfg['Servers'][1]['relation'] = 'pma_relation';
    $cfg['Servers'][1]['userconfig'] = 'pma_userconfig';
    $cfg['Servers'][1]['table_info'] = 'pma_table_info';
    $cfg['Servers'][1]['column_info'] = 'pma_column_info';
    $cfg['Servers'][1]['history'] = 'pma_history';
    $cfg['Servers'][1]['recent'] = 'pma_recent';
    $cfg['Servers'][1]['table_uiprefs'] = 'pma_table_uiprefs';
    $cfg['Servers'][1]['tracking'] = 'pma_tracking';
    $cfg['Servers'][1]['table_coords'] = 'pma_table_coords';
    $cfg['Servers'][1]['pdf_pages'] = 'pma_pdf_pages';
    $cfg['Servers'][1]['designer_coords'] = 'pma_designer_coords';
  9. บันทึกและปิดไฟล์

สำคัญ - PMA โหลดการกำหนดค่าการเข้าสู่ระบบประเมินและเก็บไว้ในข้อมูลเซสชันดังนั้นข้อความจะไม่หายไปจนกว่าคุณจะทำสิ่งนี้:

  1. ออกจากระบบ phpMyAdmin และเข้าสู่ระบบอีกครั้ง

แก้ไขปัญหา.


3
+1 สำหรับ "ออกจากระบบและกลับเข้าสู่ระบบ" ฉันเสียเวลาห้านาทีโดยที่ไม่รู้ว่าฉันต้องทำอย่างนั้น
Matthew G

1
@MatthewG ใช่ไฟล์กำหนดค่าจะถูกโหลดลงในเซสชันของคุณ ณ จุดที่คุณลงชื่อเข้าใช้เพื่อลดดิสก์ I / O ดังนั้น ^^ จะใช้กับการเปลี่ยนแปลงใด ๆ ที่คุณอาจทำกับไฟล์
ปรับแต่ง

14
ด้วยเหตุผลบางอย่างรุ่น phpmyadmin ของฉันมีชื่อตารางเป็น "pma__bookmark" และอื่น ๆ ด้วย 2 "ขีดล่าง" หากใครมีเหมือนกันคุณควรแก้ไข "config.inc.php" ตามลำดับ และ BTW ไฟล์ปรับแต่งจะอยู่ในไดเรกทอรี "/ etc / phpmyadmin" ใน Ubuntu
ajaybc

6
บน Ubuntu 14.04 ตำแหน่งสำหรับ create_tables.sql อยู่ใน
/usr/share/doc/phpmyadmin/examples/create_tables.sql.gz

5
นี่คือคำตอบที่ยอดเยี่ยม (ครบรอบ 100 +จากฉัน;)) แต่ผมไม่พบตัวอย่างไดเรกทอรีที่ชี้ไปในขั้นตอนที่ 4 แต่มันอยู่ที่นี่: /usr/share/doc/phpmyadmin/examplesและมีผมพบว่าไฟล์บีบอัด create_tables.sql.gzSQL:
Majid Fouladpour

134

ถ้าคุณมาที่นี่และคุณกำลังใช้ Debian / Ubuntu (หรือ distro based dpkg อื่น ๆ ) ให้รันคำสั่งต่อไปนี้:

sudo dpkg-reconfigure phpmyadmin

แพ็คเกจ phpmyadmin มีสคริปต์เพื่อดำเนินการนี้ให้กับคุณสิ่งที่จำเป็นต้องมีคือผู้ใช้ที่ได้รับอนุญาต ไม่จำเป็นต้องใช้ sudo หากคุณเข้าสู่ระบบในฐานะ root แน่นอน

แก้ไข: มันอาจจะคุ้มค่าที่จะลองผู้ใช้ phpmyadmin ปัจจุบัน


2
สิ่งนี้ใช้งานได้สำหรับฉันฉันต้องติดตั้งฐานข้อมูลที่ขออีกครั้ง ขอบคุณ (Ubuntu 12.04)
ino

17
ฉันต้องพิมพ์ "pma" แทน "phpmyadmin" สำหรับผู้ใช้ที่ควบคุมระหว่างการกำหนดค่าเพื่อให้การทำงานนี้
Hardell

1
ขอบคุณคุณบันทึกวันของฉัน :) hehe
Jeremy Dicaire

2
วางผู้ใช้ 'phpmyadmin' เป็นอันดับแรกและใช้งาน 'sudo dpkg-reconfigure phpmyadmin' หลังจากทำงานให้ฉัน ขอบคุณ!
bshea

1
หมายเหตุ:สิ่งนี้จะลบเซิร์ฟเวอร์ที่กำหนดค่าทั้งหมดหากมี
Raptor

23

เพียงแค่แสดงความคิดเห็นออก "ผู้ใช้สำหรับคุณสมบัติขั้นสูง" ทั้งหมดและ "Advanced phpMyAdmin มี" config.inc.phpบล็อกรหัสใน


มีคำอธิบายอะไรเกี่ยวกับเรื่องนี้? มันทำงานอย่างไรและทำไม?
ฮิวอี้

1
@ Ben: บางครั้งที่ทุกเรื่อง;)
แนว

ในไฟล์ไหน .... นี่มันแปลกมาก! แต่ทุกคนเข้าใจดังนั้นฉันจึงรู้สึกโง่และไม่สามารถแก้ไขได้
Jamie Hutber

2
นั่นคือ config.inc.php
Rocoty

1
ไม่มีสิ่งใดเหมือนUser for advanced features" and "Advanced phpMyAdmin featuresอยู่ข้างในphpmyadmin/config.inc.php
AN

11

คุณเพิ่งเปลี่ยนรหัสผ่านรูทเซิร์ฟเวอร์ MySQL หรือไม่? หากคำตอบคือใช่มากกว่านี้เป็นสาเหตุของข้อผิดพลาด / คำเตือนในคอนโซล phpMyAdmin เพื่อแก้ไขปัญหาเพียงแก้ไขไฟล์ config-db.php ของ phpMyAdmin และตั้งค่ารหัสผ่านฐานข้อมูลที่เหมาะสม

คำตอบแรกคือ messing มากเกินไปในมุมมองของฉันและคำตอบที่สองไม่ทำงานสำหรับฉัน ดังนั้น:

ในเซิร์ฟเวอร์ที่ใช้ Linux ไฟล์มักจะอยู่ใน:

/etc/phpmyadmin/config-db.php

หรือ:

/etc/phpMyAdmin/config-db.php

ตัวอย่าง: (ไฟล์ของฉันมีลักษณะเช่นนี้และฉันเปลี่ยนผู้ใช้จากphpmyadminการadminชื่อผู้ใช้ที่ฉันสร้างขึ้นสำหรับการรักษาฐานข้อมูลของฉันผ่าน phpMyAdmin และใส่รหัสผ่านที่เหมาะสม

$dbuser='phpmyadmin';
$dbpass=''; // set current password between quotes ' '
$basepath='';
$dbname='phpmyadmin';
$dbserver='';
$dbport='';
$dbtype='mysql';

เครดิต: http://tehnoblog.org/phpmyadmin-error-connection-for-controluser-as-defined-in-your-configuration-failed/


4

สิ่งนี้ใช้ได้กับฉันด้วย phpmyadmin ภายใต้ Ubuntu 16.04:

ฉันแก้ไข /etc/phpmyadmin/config.inc.php และเปลี่ยน 2 บรรทัดต่อไปนี้:

$cfg['Servers'][$i]['controluser'] = 'root'; 
$cfg['Servers'][$i]['controlpass'] = 'thepasswordgiventoroot'; 

3

บน Ubunbtu

ข้อความของเบ็นใกล้ แต่ไม่ใช่รหัสผ่านรูทที่เป็นปัญหาปัญหาที่ฉันพบคือฉันได้สร้างรหัสผ่านสำหรับฐานข้อมูล phpmyadmin เมื่อฉันติดตั้ง รหัสผ่านนี้ไม่ได้ถูกนำไปติดตั้งบน Ubuntu ดังนั้นตัวแปร $ dbpass = ''; ในไฟล์การตั้งค่าฐานข้อมูลว่างเปล่าและไม่ใช่รหัสผ่านที่คุณตั้งไว้

  1. ในการตรวจสอบว่าคุณมีรหัสผ่านที่ถูกต้องที่ command line login ไปยัง mysql โดยใช้คำสั่งต่อไปนี้: mysql -u phpmyadmin -p ลองใช้รหัสผ่านเปล่าที่ฉันพบว่าฉันถูกปฏิเสธการเข้าถึงให้ป้อนคำสั่งอีกครั้งโดยใช้รหัสผ่านที่คุณตั้งระหว่างการติดตั้ง ถ้ามันเข้าสู่ระบบคุณตอนนี้รู้ว่ารหัสผ่านคืออะไร
  2. แก้ไข/etc/phpadmin/config-db.phpและเปลี่ยน$ dbpass = ''; ถึง$ dbpass = 'รหัสผ่านของคุณ'; และบันทึกไฟล์
  3. แก้ไข/etc/dbconfig-common/phpmyadmin.confเปลี่ยนdbc_dbpass = '' ; เพื่อdbc_dbpass = 'รหัสผ่านของคุณ'; และบันทึกไฟล์ ปิดเบราว์เซอร์ของคุณและโหลดซ้ำคุณจะพบว่าข้อความหายไป

2

"สำหรับฉันที่จะทำให้มันทำงานอีกครั้งฉันเพิ่งลบไฟล์

ib_logfile0 และ

ib_logfile1

จาก:

/ Applications / MAMP / db / mysql56 / ib_logfile0 "

บน XAMPP Xampp / xamppfiles / var / mysql

รับสิ่งนี้จากคำเตือน PHP: mysqli_connect (): (HY000 / 2002): การเชื่อมต่อถูกปฏิเสธ


0

ปัญหาคือรหัสผ่านผู้ใช้ควบคุม PhpMyAdmin (ปกติ: pma) รหัสผ่านไม่ตรงกับผู้ใช้ mysql: รหัสผ่าน pma (ผู้ใช้เดียวกัน)

วิธีแก้ไข 1. ตั้งรหัสผ่านที่คุณต้องการสำหรับ pma ผู้ใช้ที่นี่:

"C: \ XAMPP \ phpMyAdmin \ config.inc.php"

$ cfg ['เซิร์ฟเวอร์'] [$ i] ['controlpass'] = 'your_new_phpmyadmin_pass';

(ควรเป็นเช่นในบรรทัดที่ 32)

จากนั้นไปที่ mysql, เข้าสู่ระบบในฐานะ root, ไปที่: (ฉันใช้ phpmyadmin เพื่อไปที่นี่)

ฐานข้อมูล: mysql »ตาราง: user

แก้ไขผู้ใช้: pma

เลือก "รหัสผ่าน" จากรายการฟังก์ชั่น (คอลัมน์ซ้าย) และตั้ง "your_new_phpmyadmin_pass" ในคอลัมน์ด้านขวาและกด go

รีสตาร์ทเซิร์ฟเวอร์ mysql

ตอนนี้ข้อความควรหายไป


0

ฉันเพียงแค่ทำการเปลี่ยนแปลงไฟล์ config.inc.php มีรหัสผ่านผิดพลาดในลิงค์นี้ $ cfg ['เซิร์ฟเวอร์'] [$ i] ['รหัสผ่าน'] = 'รหัสผ่านของคุณ'; และตอนนี้มันทำงานได้อย่างสมบูรณ์แบบ


โปรดแก้ไขคำถามของคุณและเพิ่มรายละเอียดเพิ่มเติม นี่คือคุณภาพต่ำ
แมทธิวส์ซันนี่

ด้านบนคือความละเอียดฉันไม่ได้ทำตามขั้นตอนด้านบน ฉันเพียงแค่ไปที่ไดเรกทอรี config.inc.php และเปิดไฟล์นี้ config.inc.php ใน Notepad และเปลี่ยนบรรทัดนี้ $ cfg ['เซิร์ฟเวอร์'] [$ i] ['รหัสผ่าน'] = 'รหัสผ่านของคุณ
Mohit Sharma

ฉันเห็นรหัสผ่านถูกกล่าวถึงว่ามีข้อผิดพลาดและฉันใส่รหัสผ่านที่ถูกต้องอีกครั้งและบันทึกไว้และเรียกใช้ phpmyadmin อีกครั้งและมันทำงานอย่างถูกต้องตอนนี้
Mohit Sharma

0

บน ubuntu /etc/phpmyadmin/config-db.php

ตรวจสอบให้แน่ใจว่ารหัสผ่านตรงกับ config.inc.php ของคุณสำหรับผู้ใช้งานควบคุม

สำหรับปักเป้าผิดพลาดสั้นเกินไป

แก้ไข /var/lib/phpmyadmin/blowfish_secret.inc.php และทำให้คีย์ยาวขึ้น


0

บน Ubuntu 18.04 ในetc/phpmyadmin/config.inc.php ความคิดเห็นบล็อกทั้งหมด

ทางเลือก: ผู้ใช้สำหรับคุณสมบัติขั้นสูง


-1

หลังจากเพิ่งติดตั้ง XAMPP วันนี้ฉันตัดสินใจที่จะใช้พอร์ตเริ่มต้นที่แตกต่างกันสำหรับ mysql ซึ่งน่ากลัวมาก ตรวจสอบให้แน่ใจว่าได้เพิ่มบรรทัดเหล่านี้ใน phpMyAdmin config.inc.php:

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

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