เราจำเป็นต้องให้สิทธิ์แก่ผู้ใช้ใหม่ที่เราสร้างขึ้นเนื่องจากผู้ใช้ใหม่จะไม่มีสิทธิ์ เราสามารถใช้คำสั่ง 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 วินาที)ก่อน>