ไม่สามารถลบ“ การใช้งาน GRANT”


15

ฉันกำลังทดสอบบางสิ่งและเพิ่ม:

grant usage on statistics.* to cptnotsoawesome@localhost identified by 'password';

ดังนั้นเมื่อฉันทำ

show grants for cptnotsoawesome@localhost;

ฉันเห็นว่าหนึ่งในนั้นคือ:

Grants for cptnotsoawesome@localhost
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 

ตอนนี้ฉันต้องการลบออกเพราะฉันคิดว่ามันเป็นอันตรายด้านความปลอดภัยดังนั้นฉันจึง:

REVOKE USAGE ON *.* FROM 'cptnotsoawesome'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

แต่ก็ยังแสดงให้เห็นว่าการใช้งาน USAGE ในรายการสิทธิ์

Grants for cptnotsoawesome@localhost
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 

ความคิดใด ๆ ผมทำอะไรผิดหรือเปล่า?

คำตอบ:


20

ภายใต้ประทุนเมื่อคุณเห็นผู้ใช้ที่มี USAGE เท่านั้นผู้ใช้จะถูกเขียนในตาราง mysql.user โดยปิดสิทธิ์ทั้งหมดทั่วโลก

ตอนแรกคุณระบุว่าผู้ใช้มีสิ่งนี้:

grant usage on statistics.* to cptnotsoawesome@localhost identified by 'password'; 

คุณควรจะเห็นแถวในmysql.userด้วยรหัสผ่าน MD5 และ Globals ทั้งหมด privs Nชุด คุณควรเห็นแถวใน mysql.db ด้วย

  • ผู้ใช้ = 'cptnotsoawesome'
  • โฮสต์ = 'localhost'
  • DB = 'สถิติ'
  • Priv DB ระดับทั้งหมดตั้งค่าเป็น 'Y'

คุณควรจะเห็นพวกเขาด้วยแบบสอบถามนี้

SELECT * FROM mysql.db
WHERE user='cptnotsoawesome'
AND host='localhost'
AND db='statistics'\G

mysql.dbเมื่อคุณรันคำสั่งถอนคุณก็ลบออกจากแถว mysql.userนี้ไม่ได้สัมผัสแถวใน ดังนั้นคุณยังสามารถเข้าสู่ mysql และมี privs ให้ทำงานเท่านั้น

SHOW GLOBAL VARIABLES;
SHOW GLOBAL STATUS;

หากมีฐานข้อมูลการทดสอบที่เรียกว่าtestหรือฐานข้อมูลที่มีอักขระ 5 ตัวแรกtest_(ค้นหาโดยใช้SELECT * FROM mysql.db WHERE db LIKE 'test%';) ผู้ใช้ที่มีเพียงการใช้งานสามารถมีสิทธิ์แบบเต็มในฐานข้อมูลการทดสอบ ผมเขียนเกี่ยวกับเรื่องนี้ใน ServerFault กันยายน 2011

หากคุณต้องการลบแถวออกจาก mysql.user คุณสามารถรันได้

DROP USER cptnotsoawesome@localhost;

หรือ

DELETE FROM mysql.user WHERE
WHERE user='cptnotsoawesome'
AND host='localhost';
FLUSH PRIVILEGES;

9

การใช้งาน หมายความว่าผู้ใช้ไม่มีสิทธิ์ใด ๆ

You have to use 'DROP USER'. 

drop user cptnotsoawesome@localhost;

คุณไม่สามารถเพิกถอน USAGE ได้จริงโดยไม่ต้องทิ้งผู้ใช้ USAGE เป็นสิทธิ์ระดับสากล

ดูที่ลิงค์นี้


ฉันจะทำถ้ามันทำอะไรผิดฐานข้อมูลเช่นถ้ามันเป็นภัยคุกคามความปลอดภัยหรืออะไรอย่างนั้น - ฉันก็แค่ปล่อยให้มัน
Katafalkas

2

โปรดดูคำถามนี้: -

/programming/2126225/why-is-a-grant-usage-created-the-first-time-i-grant-a-user-privileges

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


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