เหตุใดจึงมีการสร้าง“ GRANT USAGE” ในครั้งแรกที่ฉันให้สิทธิ์ผู้ใช้


104

ฉันเพิ่งเริ่มใช้งานด้านผู้ดูแลระบบของ DBMS และกำลังตั้งค่าฐานข้อมูลใหม่ในคืนนี้ (โดยใช้ MySQL) เมื่อฉันสังเกตเห็นสิ่งนี้ หลังจากให้สิทธิ์แก่ผู้ใช้เป็นครั้งแรกระบบจะสร้างการให้สิทธิ์อื่นขึ้นมา

GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password

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

ฉันไม่เข้าใจเหมือนกันว่าทำไมบรรทัดนี้จึงมีIDENTIFIED BYอนุประโยคในเมื่อทุนที่ฉันสร้างขึ้นไม่มี (ส่วนใหญ่เป็นเพราะฉันไม่เข้าใจว่าIDENTIFIED BYประโยคนี้ทำหน้าที่อะไร)

แก้ไข:ขออภัยที่ไม่ได้ระบุสิ่งนี้ในตอนแรกได้รับทุน

GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user

คุณช่วยบอกเราได้ไหมว่าทุนที่คุณเรียกใช้
Pentium10

คำตอบ:


147

อย่างที่คุณพูดใน MySQL USAGEนั้นมีความหมายเหมือนกันกับ "ไม่มีสิทธิ์" จากคู่มืออ้างอิง MySQL :

ตัวระบุสิทธิ์ USAGE ย่อมาจาก "ไม่มีสิทธิ์" ใช้ในระดับโลกกับ GRANT เพื่อแก้ไขแอตทริบิวต์ของบัญชีเช่นขีด จำกัด ทรัพยากรหรือลักษณะ SSL โดยไม่ส่งผลต่อสิทธิ์ของบัญชีที่มีอยู่

USAGEเป็นวิธีการบอก MySQL ว่ามีบัญชีอยู่โดยไม่ต้องให้สิทธิพิเศษใด ๆ กับบัญชีนั้น พวกเขาเพียงได้รับอนุญาตให้ใช้เซิร์ฟเวอร์ MySQL USAGEจึง สอดคล้องกับแถวใน`mysql`.`user`ตารางที่ไม่มีการตั้งค่าสิทธิ์

IDENTIFIED BYข้อบ่งชี้ว่ามีการตั้งค่ารหัสผ่านสำหรับผู้ใช้นั้น เราจะรู้ได้อย่างไรว่าผู้ใช้คือใคร? พวกเขาระบุตัวตนโดยการส่งรหัสผ่านที่ถูกต้องสำหรับบัญชีของตน

รหัสผ่านของผู้ใช้เป็นหนึ่งในแอตทริบิวต์บัญชีระดับสากลที่ไม่ได้เชื่อมโยงกับฐานข้อมูลหรือตารางที่ระบุ มันยังอาศัยอยู่ใน`mysql`.`user`ตาราง หากผู้ใช้ไม่มีสิทธิพิเศษอื่น ๆ ผู้ใช้จะได้ON *.*รับสิทธิ์USAGE ON *.*และแฮชรหัสผ่านจะปรากฏที่นั่น นี่มักเป็นผลข้างเคียงของCREATE USERคำสั่ง เมื่อผู้ใช้ถูกสร้างขึ้นด้วยวิธีนั้นในตอนแรกพวกเขาจะไม่มีสิทธิ์พิเศษดังนั้นพวกเขาจึงได้รับสิทธิ์USAGEเท่านั้น


10
ฉันคิดว่าเป็นเพราะพวกเขาได้รับอนุญาตให้ตรวจสอบสิทธิ์ หากคุณลองใช้ผู้ใช้หรือ / และรหัสผ่านผิดคุณจะไม่สามารถรับรองความถูกต้องได้ ผู้ใช้ที่มีสิทธิ์ USAGE สามารถเรียกใช้คำสั่ง SQL บางคำสั่งเช่น 'select 1 + 1' และ 'show processlist'
Mircea Vutcovici

11

ฉันพยายามค้นหาความหมายของGRANT USAGE on *.* TOและพบที่นี่ ฉันสามารถชี้แจงได้ว่าGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD passwordจะได้รับเมื่อคุณสร้างผู้ใช้ด้วยคำสั่งต่อไปนี้ ( CREATE):

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; 

เมื่อคุณให้สิทธิ์ด้วยสิทธิพิเศษGRANTใหม่จะถูกเพิ่มไว้ด้านบน


3

นอกจากนี้รหัสผ่าน mysql เมื่อไม่ใช้IDENTIFIED BYประโยคอาจเป็นค่าว่างหากไม่ว่างอาจถูกเข้ารหัส แต่ใช่USAGEใช้เพื่อแก้ไขบัญชีโดยการให้ตัว จำกัด ทรัพยากรอย่างง่ายเช่นMAX_QUERIES_PER_HOURอีกครั้งซึ่งสามารถระบุได้โดยใช้ส่วนคำสั่ง WITH ร่วมกับGRANT USAGE(ไม่เพิ่มสิทธิ์พิเศษ) หรือGRANT ALLคุณสามารถระบุGRANT USAGEในระดับโลกระดับฐานข้อมูล ระดับโต๊ะ ฯลฯ ....

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