Score:1

การเข้าถึง mariaDB 10.5.12 ถูกปฏิเสธสำหรับ [email protected]

ธง ca
mpr

การติดตั้ง mariaDB 10.5.12 ใหม่บนเดเบียน 11 ได้รับการเสริมความแข็งแกร่งด้วยสคริปต์ 'mysql_secure_installation' คำถาม "เปลี่ยนไปใช้การรับรองความถูกต้องของยูนิกซ์_socket [Y/n]" ได้รับการตอบด้วย 'ใช่'

ตอนนี้ mariaDB อนุญาตให้รูทในเครื่องเข้าสู่ระบบเมื่อโฮสต์เท่ากับ 'localhost':

mysql --host=localhost
ยินดีต้อนรับสู่จอภาพ MariaDB คำสั่งลงท้ายด้วย ; หรือ \g
รหัสการเชื่อมต่อ MariaDB ของคุณคือ 40
เวอร์ชันเซิร์ฟเวอร์: 10.5.12-MariaDB-0+deb11u1-log Debian 11

ลิขสิทธิ์ (c) 2000, 2018, Oracle, MariaDB Corporation Ab และอื่นๆ

พิมพ์ 'ความช่วยเหลือ;' หรือ '\h' เพื่อขอความช่วยเหลือ พิมพ์ '\c' เพื่อล้างคำสั่งอินพุตปัจจุบัน

MariaDB [(ไม่มี)]>

แต่ปฏิเสธเมื่อใช้ที่อยู่ IP:

mysql --host=127.0.0.1
ข้อผิดพลาด 1698 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root'@'127.0.0.1'

หลังจาก Duckducking ได้ทำการแก้ไขฐานข้อมูลดังต่อไปนี้:

สร้างผู้ใช้ 'รูท'@'::1' ระบุผ่าน unix_socket;
ให้สิทธิ์ทั้งหมดบน *.* เพื่อ 'รูท'@'::1' ด้วยตัวเลือกการอนุญาต;
สร้างผู้ใช้ 'root'@'127.0.0.1' ระบุผ่าน unix_socket;
มอบสิทธิ์ทั้งหมดบน *.* ถึง 'รูท'@'127.0.0.1' ด้วยตัวเลือกการอนุญาต;
ล้างสิทธิ์;

พารามิเตอร์ "skip-name-resolve" ไม่มีอยู่ในการกำหนดค่าของเซิร์ฟเวอร์:

แสดงตัวแปร เช่น '%skip_name%';
+----------------------+------+
| ชื่อตัวแปร | ค่า |
+----------------------+------+
| skip_name_resolve | ปิด |
+----------------------+------+

บัญชีรูทที่เกี่ยวข้องคือ:

MariaDB [mysql]> เลือกผู้ใช้, รหัสผ่าน, โฮสต์, ปลั๊กอินจากผู้ใช้โดยที่ user='root';
+------+----------+----------+------------+
| ผู้ใช้ | รหัสผ่าน | โฮสต์ | ปลั๊กอิน |
+------+----------+----------+------------+
| ราก | | โลคัลโฮสต์ | ยูนิกซ์_ซ็อกเก็ต |
| ราก | | ::1 | ยูนิกซ์_ซ็อกเก็ต |
| ราก | | 127.0.0.1 | ยูนิกซ์_ซ็อกเก็ต |
+------+----------+----------+------------+

ด้วยเหตุผลบางประการ root ของโลคัลจึงได้รับอนุญาตให้เข้าถึง 'localhost' แต่จะไม่สามารถเข้าถึงฐานข้อมูลทั้งเมื่อเชื่อมต่อผ่าน "127.0.0.1" หรือเมื่อเชื่อมต่อผ่าน "::1"

ทำไม ?

Score:1
ธง ar

ในระยะสั้น โลคัลโฮสต์ ถือว่าเป็น ใช้ซ็อกเก็ต. คำตอบนี้ ใน StackOverflow อธิบายว่า:

เซิร์ฟเวอร์ MariaDB (เช่น MySQL) ปฏิบัติต่อ localhost ด้วยวิธีพิเศษ ในกรณีที่ซอฟต์แวร์อื่นปฏิบัติเหมือนเป็นนามแฝงของที่อยู่ย้อนกลับ 127.0.0.1 MariaDB จะตีความว่าเป็นการเชื่อมต่อซ็อกเก็ตโดเมน UNIX กับเซิร์ฟเวอร์ โดยค่าเริ่มต้น ไฟล์ซ็อกเก็ตนี้จะอยู่ใน /var/lib/mysql/mysql.sock

เนื่องจากคุณไม่ได้เชื่อมต่อผ่านซ็อกเก็ตเมื่อคุณใช้งาน 127.0.0.1การรับรองความถูกต้องของซ็อกเก็ตไม่ทำงาน คุณต้องใช้อย่างใดอย่างหนึ่ง โลคัลโฮสต์ หรือ --socket=/path/to/socket.

ca flag
mpr
กระจ่าง ขอบคุณสำหรับคำอธิบายข้างต้น แต่ ... "ข้อผิดพลาด 2002 (HY000): ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL บน '127.0.0.1' (115)" ยังคงมีอยู่เมื่อบูตสแตรปโหนดแรกในคลัสเตอร์ galera ดังนั้น ... ฉันต้องแก้ไข "galera_new_cluster" เพื่อแก้ไขหรือไม่
vidarlo avatar
ar flag
บอก galera ให้เชื่อมต่อผ่านซ็อกเก็ตหรือกำหนดค่า MySQL ใหม่เพื่อให้สอดคล้องกับวิธีที่คุณต้องการใช้
vidarlo avatar
ar flag
ในเชิงเปรียบเทียบ ให้ *ถาม* เกี่ยวกับสิ่งที่คุณ[ต้องการบรรลุ ไม่ใช่วิธีที่คุณคิดว่าจะบรรลุผล](https://xyproblem.info/) เป้าหมายของคุณคือการเชื่อมต่อ Galera กับ MySQL แต่คุณถามว่าทำไม `localhost` จึงจัดการแตกต่างจาก `127.0.0.1` - คุณจึงได้คำตอบที่ตรงประเด็น ซึ่งไม่ได้ช่วยคุณแก้ปัญหา *จริง* ของคุณได้อย่างแท้จริง
ca flag
mpr
ใช่: เห็นด้วยกับคุณ @vidarlo ในขณะที่สร้างคำถาม มันเป็นข้อบกพร่องหรือการกำหนดค่าที่ไม่ถูกต้องในความเข้าใจของฉัน ปรากฎว่าการจัดการ localhost และ 127.0.0.1 แตกต่างกันเป็นคุณสมบัติของ maria/mysql ดังนั้นจึงจำเป็นต้องแก้ไข

โพสต์คำตอบ

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