เปิดใช้งานการเข้าถึงระยะไกล (ให้สิทธิ์) หน้าแรก / บทช่วยสอน / Mysql / เปิดใช้งานการเข้าถึงระยะไกล (ให้สิทธิ์) หากคุณพยายามเชื่อมต่อกับเซิร์ฟเวอร์ mysql ของคุณจากเครื่องระยะไกลและพบข้อผิดพลาดด้านล่างบทความนี้เหมาะสำหรับคุณ
ข้อผิดพลาด 1130 (HY000): โฮสต์ '1.2.3.4' ไม่ได้รับอนุญาตให้เชื่อมต่อกับเซิร์ฟเวอร์ MySQL นี้
เปลี่ยนการกำหนดค่า mysql
เริ่มต้นด้วยการแก้ไขไฟล์ config mysql
vim /etc/mysql/my.cnf
ใส่ความคิดเห็นลงในบรรทัดต่อไปนี้
#bind-address = 127.0.0.1
#skip-networking
หากคุณไม่พบสายข้ามเครือข่ายให้เพิ่มและแสดงความคิดเห็น
รีสตาร์ทเซิร์ฟเวอร์ mysql
~ /etc/init.d/mysql restart
เปลี่ยนสิทธิ์ GRANT
คุณอาจประหลาดใจที่เห็นการเปลี่ยนแปลงดังกล่าวข้างต้นคุณไม่ได้รับการเข้าถึงระยะไกลหรือการเข้าถึง แต่ไม่สามารถเข้าถึงฐานข้อมูลทั้งหมด
โดยค่าเริ่มต้นชื่อผู้ใช้และรหัสผ่าน mysql ที่คุณใช้จะได้รับอนุญาตให้เข้าถึง mysql-server ในพื้นที่ ดังนั้นจำเป็นต้องอัปเดตสิทธิ์
เรียกใช้คำสั่งด้านล่างเพื่อเข้าถึงจากเครื่องทั้งหมด (แทนที่USERNAME
และPASSWORD
ด้วยข้อมูลประจำตัวของคุณ)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
เรียกใช้คำสั่งด้านล่างเพื่อให้เข้าถึงได้จาก IP เฉพาะ (แทนที่USERNAME
และPASSWORD
ด้วยข้อมูลประจำตัวของคุณ)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
คุณสามารถแทนที่ 1.2.3.4 ด้วย IP ของคุณ คุณสามารถเรียกใช้คำสั่งข้างต้นได้หลายครั้งเพื่อเข้าถึง GRANT จากหลาย IP
นอกจากนี้คุณยังสามารถระบุการแยกUSERNAME
& PASSWORD
สำหรับการเข้าถึงระยะไกล
คุณสามารถตรวจสอบผลลัพธ์สุดท้ายได้โดย:
SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";
สุดท้ายคุณอาจต้องเรียกใช้:
mysql> FLUSH PRIVILEGES;
ทดสอบการเชื่อมต่อ
จาก terminal / command-line:
mysql -h HOST -u USERNAME -pPASSWORD
หากคุณได้รับเชลล์ mysql อย่าลืมรันฐานข้อมูลการแสดง; เพื่อตรวจสอบว่าคุณมีสิทธิ์ที่ถูกต้องจากเครื่องระยะไกล
เคล็ดลับโบนัส: เพิกถอนการเข้าถึง
หากคุณให้สิทธิ์การเข้าถึงแก่ผู้ใช้โดยบังเอิญคุณจะต้องมีตัวเลือกการเพิกถอนที่ดีกว่า
การติดตามจะยกเลิกตัวเลือกทั้งหมดสำหรับ USERNAME จากเครื่องทั้งหมด:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.
หากคุณเห็นว่ามีสิทธิ์ใช้งาน USAGE หลังจากเรียกใช้คำสั่งถอนเพิกถอนได้ มันดีเหมือนไม่มีสิทธิ์เลย ฉันไม่แน่ใจว่าสามารถเพิกถอนได้หรือไม่