เพิกถอนสิทธิ์จากผู้ใช้ใน mySQL

สำหรับผู้ใช้ใหม่ทุกคนที่เราสร้างใน mySQL โดยใช้คำสั่ง

CREATE USER newuser@localhost IDENTIFIED BY 'password';

"SHOW GRANTS" แสดงเฉพาะสิทธิ์ "USAGE ON *.* " เท่านั้น

แต่ผู้ใช้สามารถเลือก แทรก .. ในฐานข้อมูล "test" และ "information_schema" ได้ และฉันไม่สามารถเพิกถอนสิทธิ์เหล่านี้ใน "ทดสอบ" ได้โดยใช้คำสั่งเพิกถอนที่ระบุด้านล่าง

REVOKE ALL ON test.* FROM newuser@localhost;
ERROR 1141 (42000) : There is no such grant defined for user 'guest' on host 'localhost'

ฉันไม่ต้องการให้ผู้ใช้ใหม่เข้าถึงฐานข้อมูลการทดสอบและ information_schema


person Roronoa    schedule 22.06.2013    source แหล่งที่มา
comment
แล้วการลบผู้ใช้และสร้างใหม่อีกครั้งด้วย GRANT ... ON <Schema name>.* แทน *.* ล่ะ   -  person Nir Alfasi    schedule 22.06.2013
comment
ฉันพยายามให้สิทธิ์การใช้งานบนฐานข้อมูล * ไปยัง newuser@localhost IDENTIFIED BY 'password'; แต่ยังคงให้สิทธิ์ฐานข้อมูลทั้งหมด เช่น การใช้งานบน *.* สำหรับผู้ใช้ใหม่   -  person Roronoa    schedule 22.06.2013


คำตอบ (1)


http://dev.mysql.com/doc/refman/5.6/en/default-privileges.html

ตามค่าเริ่มต้น ตาราง mysql.db จะมีแถวที่อนุญาตให้ผู้ใช้เข้าถึงฐานข้อมูล test และฐานข้อมูลอื่นๆ ที่มีชื่อขึ้นต้นด้วย test_ (...) ซึ่งหมายความว่าฐานข้อมูลดังกล่าวสามารถใช้งานได้แม้กับบัญชีที่ไม่มีสิทธิ์พิเศษก็ตาม หากคุณต้องการลบการเข้าถึงฐานข้อมูลทดสอบของผู้ใช้ ให้ดำเนินการดังต่อไปนี้:

mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;

(...) จากการเปลี่ยนแปลงก่อนหน้านี้ เฉพาะผู้ใช้ที่มีสิทธิ์ฐานข้อมูลส่วนกลางหรือสิทธิ์ที่ได้รับอย่างชัดเจนสำหรับฐานข้อมูลทดสอบเท่านั้นที่สามารถใช้งานได้

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

person RandomSeed    schedule 22.06.2013