it-swarm.asia

لا يمكن إزالة "استخدام المنحة"

كنت أختبر بعض الأشياء ، وأضفت:

grant usage on statistics.* to [email protected] identified by 'password';

حتى الآن عندما أفعل

show grants for [email protected];

أستطيع أن أرى أن أحدهم هو:

Grants for [email protected]
----------------------------------
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 [email protected]
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 

أي أفكار لماذا؟ ما الخطأ الذي افعله؟

15
Katafalkas

تحت الغطاء ، عندما ترى مستخدمًا باستخدام USAGE فقط ، يتم كتابة المستخدم في جدول mysql.user مع إيقاف تشغيل جميع الامتيازات العالمية.

لقد ذكرت في الأصل أن المستخدم لديه ما يلي:

grant usage on statistics.* to [email protected] identified by 'password'; 

سترى صف في mysql.user مع كلمة مرور MD5 وجميع خصوصية globals مضبوطة على N. يجب أن ترى أيضًا صفًا في mysql.db مع

  • المستخدم = "cptnotsoawesome"
  • المضيف = "localhost"
  • ديسيبل = "إحصائيات"
  • تم تعيين جميع مستويات DB الخاصة على "Y"

يجب أن تكون قادرًا على رؤيتهم باستخدام هذا الاستعلام

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

عندما قمت بتشغيل الأمر REVOKE ، قمت ببساطة بإزالة الصف من mysql.db. هذا لم يلمس الصف في mysql.user. وبالتالي ، لا يزال بإمكانك تسجيل الدخول إلى mysql ولديك فقط الحواسيب للتشغيل

SHOW GLOBAL VARIABLES;
SHOW GLOBAL STATUS;

إذا كانت هناك قاعدة بيانات تجريبية تسمى test أو قاعدة بيانات تكون أول 5 أحرف فيها test_، (ابحث عنه بإستخدام SELECT * FROM mysql.db WHERE db LIKE 'test%';) عندها يمكن للمستخدم الذي لديه فقط USAGE الحصول على حقوق كاملة لقواعد بيانات الاختبار. كتبت عن هذا في ServerFault سبتمبر 2011 .

إذا كنت تريد إزالة الصف من mysql.user ، يمكنك إما تشغيله

DROP USER [email protected];

أو

DELETE FROM mysql.user WHERE
WHERE user='cptnotsoawesome'
AND Host='localhost';
FLUSH PRIVILEGES;
20
RolandoMySQLDBA

[~ # ~] الاستخدام [~ # ~] يعني أن المستخدم ليس لديه أي امتيازات.

You have to use 'DROP USER'. 

drop user [email protected];

لا يمكنك إلغاء USAGE بالفعل ، دون إسقاط المستخدم.

إلقاء نظرة على هذا الرابط .

9
Abdul Manaf

يرجى النظر إلى هذا السؤال: -

https://stackoverflow.com/questions/2126225/why-is-a-grant-usage-created-the-first-time-i-grant-a-user-privileges

يعمل امتياز USAGE بشكل أساسي مثل امتياز على مستوى النظام لا يمكنك إزالته. يتم استخدامه داخليًا بواسطة MySQL حتى تتمكن من معالجة نظام الامتيازات.

2
Kiri