MySQL: การสร้างผู้ใช้ที่สามารถเชื่อมต่อจากหลายโฮสต์ได้


30

ฉันใช้ MySQL และฉันต้องการสร้างบัญชีที่สามารถเชื่อมต่อจาก localhost หรือจากเซิร์ฟเวอร์อื่นเช่น 10.1.1.1 ดังนั้นฉันกำลังทำ:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1';

วิธีนี้ใช้งานได้ดี แต่มีวิธีที่สง่างามกว่านี้ในการสร้างบัญชีผู้ใช้ที่เชื่อมโยงกับหลาย IP หรือต้องทำเช่นนี้?

ความกังวลหลักของฉันคือในอนาคตการอนุญาตจะได้รับการอัปเดตสำหรับบัญชี 'bob' หนึ่งบัญชี แต่ไม่ใช่อีกบัญชีหนึ่ง

คำตอบ:


20

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

ฉันยังคงพยายามหาวิธีที่จะกำจัดค่าใช้จ่ายเมื่อจัดการการพิสูจน์ตัวตนกับการติดตั้ง MySQL ขนาดใหญ่และยังไม่พบโซลูชันที่สมบูรณ์แบบ


8

เริ่มต้นด้วยการสร้างผู้ใช้ใหม่ชื่อ "chaminda" ภายในเปลือก MySQL:

CREATE USER 'chaminda'@'%' IDENTIFIED BY 'password';

สิ่งแรกที่ต้องทำคือการให้สิทธิ์ที่จำเป็นแก่ผู้ใช้และที่นี่ฉันได้ให้สิทธิ์ทั้งหมดแก่ผู้ใช้โดยเฉพาะ

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'%';

โหลดสิทธิ์ทั้งหมดอีกครั้ง

FLUSH PRIVILEGES;

หากคุณต้องการอนุญาตช่วงของ IP ให้กับผู้ใช้รายใดรายหนึ่งดังต่อไปนี้ 10.1.1.%

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'10.1.1.%';

หมายเหตุ: ที่ นี่ชื่อโฮสต์ =% และนั่นหมายความว่าคุณสามารถเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลนี้จากโฮสต์ใด ๆ การให้สิทธิ์ทั้งหมดแก่ผู้ใช้ถือเป็นความเสี่ยงที่ยิ่งใหญ่และนั่นไม่ใช่วิธีปฏิบัติที่ดีที่สุด เพิ่มเติมคุณสามารถแทนที่ผู้ใช้ 'chaminda' เป็น 'bob'


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

นอกจากนี้คุณยังสามารถใช้ _ เป็นสัญลักษณ์แทนเช่น 10.1.1.1__ เพื่อจับคู่ 100-199 แต่สำหรับ 200 คุณต้องสร้างบัญชีแยกหรือใช้% ตัวแทนและรวม 0-99 และ 201-255 ด้วย
Chaminda Bandara

-3

MySQL อนุญาตให้ใช้สัญลักษณ์แทนได้หลายใบในหนึ่งแถว ทางออกที่เป็นไปได้คือการตั้งค่าโฮสต์ให้ผู้ใช้Bobเป็น

locahost/10.1.1.1

อ้างอิง:

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html


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