การติดตั้ง 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"
ทำไม ?