Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เราจะให้สิทธิ์ผู้ใช้ MySQL ได้อย่างไร


เราจำเป็นต้องให้สิทธิ์แก่ผู้ใช้ใหม่ที่เราสร้างขึ้นเนื่องจากผู้ใช้ใหม่จะไม่มีสิทธิ์ เราสามารถใช้คำสั่ง GRANT เพื่อให้สิทธิ์แก่บัญชีผู้ใช้ได้ ไวยากรณ์จะเป็นดังนี้ -

ไวยากรณ์

สิทธิ์ GRANT,[สิทธิ์],.. ON ผู้ใช้สิทธิพิเศษ_ระดับTO [ระบุโดยรหัสผ่าน][REQUIRE tsl_option][ด้วย [GRANT_OPTION | ทรัพยากร_option]];

คำอธิบายของไวยากรณ์ข้างต้นมีดังนี้ −

ขั้นแรก ระบุหนึ่งสิทธิ์หรือมากกว่าหลังคีย์เวิร์ด GRANT หากเราให้สิทธิ์ผู้ใช้หลายสิทธิ์ แต่ละสิทธิ์จะถูกคั่นด้วยเครื่องหมายจุลภาค

ถัดไป ระบุ Privilege_level ที่กำหนดระดับที่สิทธิ์ใช้ MySQL รองรับระดับสากล ( *.*), ฐานข้อมูล (ฐานข้อมูล.*), ตาราง (ฐานข้อมูล.ตาราง) และระดับคอลัมน์ หากเราใช้ระดับสิทธิ์ของคอลัมน์ เราต้องระบุคอลัมน์ที่คั่นด้วยเครื่องหมายจุลภาคหนึ่งรายการหรือหนึ่งรายการหลังสิทธิ์แต่ละรายการ

จากนั้นวางผู้ใช้ที่เราต้องการให้สิทธิ์ หากผู้ใช้มีอยู่แล้ว GRANTstatement จะปรับเปลี่ยนสิทธิ์ของตน มิฉะนั้น คำสั่ง GRANT จะสร้างผู้ใช้ใหม่ ส่วนคำสั่งเสริม IDENTIFIED BY ช่วยให้เราตั้งรหัสผ่านใหม่ให้กับผู้ใช้ได้

หลังจากนั้นเราระบุว่าผู้ใช้ต้องเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูลผ่านการเชื่อมต่อที่ปลอดภัยเช่น SSL, X059 เป็นต้นหรือไม่

สุดท้าย คำสั่งตัวเลือก WITH GRANT OPTION ช่วยให้เราสามารถให้สิทธิ์ผู้ใช้รายอื่นหรือลบสิทธิ์ที่เรามีจากผู้ใช้รายอื่น นอกจากนี้ เราสามารถใช้คำสั่ง WITH เพื่อจัดสรรทรัพยากรของเซิร์ฟเวอร์ฐานข้อมูล MySQL เช่น เพื่อกำหนดจำนวนการเชื่อมต่อหรือคำสั่งที่ผู้ใช้สามารถใช้ได้ต่อชั่วโมง สิ่งนี้มีประโยชน์มากในสภาพแวดล้อมที่ใช้ร่วมกัน เช่น MySQL โฮสติ้งที่ใช้ร่วมกัน

ตัวอย่าง

ในตัวอย่างด้านล่าง เรากำลังสร้างผู้ใช้และให้สิทธิ์แก่ผู้ใช้ -

mysql> ใช้ mysqlDatabase เปลี่ยน mysql> สร้างผู้ใช้ abcd@localhost ที่ระบุโดย 'password123'; ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.04 วินาที)

ข้อความค้นหาด้านล่างจะให้สิทธิ์แก่เราสำหรับบัญชีผู้ใช้ใหม่ abcd@localhost

mysql> แสดงเงินช่วยเหลือสำหรับ abcd@localhost;+--------------------------------------------- -----+| ทุนสำหรับ abcd@localhost |+------------------------------------------+ | ให้สิทธิ์การใช้งาน *.* เพื่อ 'abcd'@'localhost' |+------------------------------------------------ --------+1 แถวในชุด (0.01 วินาที)

ตอนนี้ เพื่อให้สิทธิ์ทั้งหมดแก่บัญชีผู้ใช้ abcd@localhost เราสามารถใช้คำสั่งต่อไปนี้ -

mysql> ให้สิทธิ์ทั้งหมดบน *.* เป็น 'abcd'@'localhost' ด้วยตัวเลือก GRANT แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.05 วินาที)

ในที่นี้ ON *.* clause หมายถึงฐานข้อมูลทั้งหมดและอ็อบเจ็กต์ทั้งหมดในฐานข้อมูล WITH GRANT OPTION ช่วยให้ abcd@localhost ให้สิทธิ์แก่ผู้ใช้รายอื่นได้

ตอนนี้ถ้าเราจะใช้คำสั่ง SHOW GRANTS อีกครั้ง เราจะเห็นว่าสิทธิพิเศษของ abcd@localhost ได้รับการอัปเดตแล้ว

mysql> แสดงเงินช่วยเหลือสำหรับ abcd@localhost;+--------------------------------------------- ---------------------------------+| ทุนสำหรับ abcd@localhost |+------------------------------------------ --------------------+| ให้สิทธิ์ทั้งหมดบน *.* เพื่อ 'abcd'@'localhost' ด้วยตัวเลือก GRANT |+------------------------------------ ---------------------------------------- +1 แถวในชุด (0.00 วินาที)