ผู้ใช้ฐานข้อมูล MySQL: ต้องการสิทธิพิเศษใด


52

คำแนะนำในการติดตั้งแบบสั้นสำหรับ WordPress ( "5 นาที" ) ระบุว่า:

สร้างฐานข้อมูลสำหรับ WordPress บนเว็บเซิร์ฟเวอร์ของคุณเช่นเดียวกับผู้ใช้ MySQL ที่มีสิทธิ์ทั้งหมดในการเข้าถึงและแก้ไข

ในขณะที่ตั้งค่าบล็อกใหม่อย่างมืออาชีพฉันสงสัยว่าวิธีการนั้นจะเชื่อมโยงกับการกำหนดค่าสิทธิ์ / การอนุญาตผู้ใช้ฐานข้อมูล MySQL ให้ฉัน:

  • ข้อมูล: SELECT , INSERT, UPDATE,DELETE
  • ความหมาย: CREATE , ALTER,DROP
  • เสริม: INDEX
  • มากกว่า:
    1. LOCK TABLES
    2. REFERENCES
    3. CREATE TEMPORARY TABLES
    4. CREATE VIEW
    5. SHOW VIEW
    6. CREATE ROUTINE
    7. EXECUTE
    8. ALTER ROUTINE

ฉันค่อนข้างแน่ใจสำหรับสามกลุ่มแรกฉันตั้งชื่อพวกเขาว่า Data, Definition และ Extra ที่นี่ แต่แล้วคนอื่น ๆ ที่อยู่ใต้รายการเพิ่มเติม โดยปกติฉันจะบอกว่าสิ่งเหล่านั้นไม่จำเป็น แต่ฉันต้องการได้รับความเห็นที่สอง

คำตอบ:


13

คนอื่นไม่จำเป็นตามที่คุณชี้ให้เห็น

Btw สิ่งที่คุณทำได้คือตั้งค่าผู้ใช้ / รหัสผ่านตามเงื่อนไขตามหน้าที่ร้องขอ เช่นเดียวกับที่ไม่มีสิทธิ์ใช้งานด้วย select / insert / update / delete สำหรับการใช้งานปกติและสิทธิพิเศษพร้อมสิ่งที่เกี่ยวข้องกับคำนิยาม / ดัชนีนอกเหนือจากเมื่อเข้าสู่หน้าอัปเกรด


1
มีการอ้างอิงใด ๆ เกี่ยวกับวิธีการตั้งค่าผู้ใช้ / รหัสผ่านตามเงื่อนไขของหน้าเว็บที่ร้องขอในสภาพแวดล้อม WordPress หรือไม่? TA
superjos

@superjos: ไม่ใช่ว่าฉันรู้ว่าปิดหัวของฉัน แต่ส่วนสำคัญของมันคือการกำหนดผู้ใช้ฐานข้อมูลปกติเลือก / insert / update / delete ใน wp-config และเมื่อ url ตรงกับที่เกี่ยวข้อง / หน้า wp-admin (น่าจะอัพเกรดเปิดใช้งานธีมและเปิดใช้งานปลั๊กอิน) เพื่อกำหนดผู้ใช้อื่นที่สามารถทำทุกอย่างได้
เดนิสเดอเบอร์นาดี

34

"สิทธิพิเศษทั้งหมด" มักจะหมายความว่าคุณควรทำทุกอย่างให้กับผู้ใช้ อย่างไรก็ตาม ...

ฉันพบบทความอย่างน้อยหนึ่งบทความที่อ้างว่าผู้ใช้ MySQL ต้องการเพียง:

  • เลือก
  • INSERT
  • UPDATE

ขุดลึกลงไปฉันพบว่าในการใช้งานอย่างเต็มรูปแบบ (การอัปเดตอัตโนมัติ, การติดตั้ง / ถอนการติดตั้งปลั๊กอิน ฯลฯ ), WordPress ต้องได้รับการอนุญาตเพิ่มเติม:

  • ลบ
  • ALTER (สำหรับอัปเดต)
  • สร้างตาราง
  • DROP Table

นอกจากนี้ยังไม่ได้อ้างอิง แต่มันก็สมเหตุสมผล:

  • ดัชนี

แต่สิ่งเหล่านี้เป็นเพียงข้อมูลอ้างอิงที่มั่นคงสองข้อเท่านั้นที่ฉันสามารถค้นหาได้ซึ่งสำรองไว้โดยความคิดเห็นที่โพสต์ไว้ที่อื่น ฉันยังคงสนับสนุนให้คุณยึดติดกับ GRANT ALL แต่ถ้าคุณต้องจำกัด การใช้ฐานข้อมูลของคุณอย่างจริงจังให้เริ่มต้นด้วยสิทธิพิเศษทั้ง 7 นี้และทดสอบอย่างเต็มที่เพื่อให้แน่ใจว่าสิ่งต่าง ๆ ทำงานได้อย่างที่คาดไว้


ขอบคุณสำหรับการแบ่งปันความคิดของคุณ สำหรับไซต์ที่ติดตั้งฉันไม่ได้ให้สิทธิ์ทั้งหมดเนื่องจากนี่ไม่ใช่ไซต์สำหรับการพัฒนา ดัชนี. ดูดีจนถึงตอนนี้ฉันคิดว่าฉันเก็บมันไว้ในอีกไม่กี่วันข้างหน้ามันเป็นเว็บไซต์แห่งชีวิตจริง มีการใช้ปลั๊กอินจำนวนมากและไม่ชอบ สำหรับ INDEX ฉันอาจค้นหา core และ mysql ด้วยตนเองเล็กน้อยเช่นกัน
hakre

1
เพียงจำไว้ว่าปลั๊กอินของบุคคลที่สามสามารถโทรหาคำสั่ง SQL ใดก็ได้ที่พวกเขาต้องการ ... ดังนั้นตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบอย่างถูกต้องก่อนที่จะติดตั้งสิ่งที่ขึ้นอยู่กับสิทธิ์ที่คุณเพิกถอน
EAMann

12

นี่คือสิ่งที่ Codex กล่าวไว้ในการ จำกัด สิทธิ์ของผู้ใช้ฐานข้อมูล:

สำหรับการใช้งาน WordPress ปกติเช่นการโพสต์บล็อกโพสต์อัพโหลดไฟล์มีเดียโพสต์ความคิดเห็นสร้างผู้ใช้ WordPress ใหม่และติดตั้งปลั๊กอิน WordPress ผู้ใช้ฐานข้อมูล MySQL ต้องการเพียงอ่านข้อมูลและเขียนสิทธิ์ในฐานข้อมูล MySQL เลือก, INSERT, UPDATE และ DELETE

ดังนั้นโครงสร้างฐานข้อมูลอื่น ๆ และสิทธิ์การดูแลระบบเช่น DROP, ALTER และ GRANT สามารถถูกเพิกถอนได้ ด้วยการเพิกถอนสิทธิ์ดังกล่าวคุณจะได้ปรับปรุงนโยบายการกักกัน

หมายเหตุ: ปลั๊กอินธีมและการปรับปรุง WordPress ที่สำคัญบางอย่างอาจต้องทำการเปลี่ยนแปลงโครงสร้างของฐานข้อมูลเช่นเพิ่มตารางใหม่หรือเปลี่ยนสคีมา ในกรณีเช่นนี้ก่อนที่จะติดตั้งปลั๊กอินหรืออัปเดตซอฟต์แวร์ให้สิทธิ์ผู้ใช้ฐานข้อมูลที่จำเป็นชั่วคราว

http://codex.wordpress.org/Hardening_WordPress


2
ฉันพยายามฝึกฝนหลักการของ Least Privilege เมื่อเป็นไปได้ ข้อมูลที่อ้างถึง (มีประโยชน์) ไม่ได้อยู่ในบทความ Codex ที่เชื่อมโยงอีกต่อไปดังนั้นขอขอบคุณที่คัดลอกมาที่นี่
Anthony G - ความยุติธรรมสำหรับ Monica

2

เกี่ยวกับ "หมายเหตุ" ในโพสต์ของ redburn, Wordpress Codex ยังมีคำเตือนคุณควรอ่านเกี่ยวกับการปรับปรุงและการเปลี่ยนแปลงคีมาฐานข้อมูล ...

(แก้ไข: ฉันสังเกตเห็นว่าฉันไม่เห็น "GRANT"ในรายการสิทธิ์อีกต่อไปเมื่อสร้างหรืออัปเดตผู้ใช้บางที"CREATE"ควรเพิ่มในรายการหรือไม่ไม่มีใครมีข้อมูลเกี่ยวกับเรื่องนี้หรือไม่ - ใช้ Hostgator cPanel , มีนาคม 2016 -)

คำเตือน: การ
พยายามอัปเดตโดยไม่ต้องมีสิทธิ์พิเศษเหล่านี้ [ SELECT, INSERT, UPDATE, DELETE, DROP, ALTER และ GRANT] อาจทำให้เกิดปัญหาเมื่อมีการเปลี่ยนแปลงคีมาฐานข้อมูล ดังนั้นจึงไม่แนะนำให้เพิกถอนสิทธิ์เหล่านี้ หากคุณรู้สึกว่าจำเป็นต้องทำเช่นนี้ด้วยเหตุผลด้านความปลอดภัยโปรดตรวจสอบให้แน่ใจว่าคุณมีแผนสำรองที่มั่นคงก่อนแล้วด้วยการสำรองฐานข้อมูลปกติทั้งหมดซึ่งคุณได้ทำการทดสอบนั้นถูกต้องและสามารถกู้คืนได้ง่าย โดยปกติการอัปเกรดฐานข้อมูลที่ล้มเหลวสามารถแก้ไขได้ด้วยการกู้คืนฐานข้อมูลกลับไปเป็นเวอร์ชันเก่าให้สิทธิ์ที่เหมาะสมจากนั้นให้ WordPress ลองอัปเดตฐานข้อมูลอีกครั้ง การกู้คืนฐานข้อมูลจะส่งคืนกลับเป็นเวอร์ชันเก่าและหน้าจอการดูแลระบบ WordPress จะตรวจพบเวอร์ชันเก่าและให้คุณเรียกใช้คำสั่ง SQL ที่จำเป็นในนั้น การอัปเกรด WordPress ส่วนใหญ่ไม่เปลี่ยนสคีมา แต่บางอย่างก็ทำได้ การอัพเกรดเฉพาะจุดสำคัญ (3.7 เป็น 3.8, ตัวอย่าง) จะเปลี่ยนสคีมา การอัปเกรดเล็กน้อย (3.8 ถึง 3.8.1) โดยทั่วไปจะไม่ อย่างไรก็ตามให้สำรองข้อมูลปกติ

Codex: http://codex.wordpress.org/Hardening_WordPress


0

ความคิดเห็นของฉันเหมือนกับ @EAMann ด้านบนรวมถึงแหล่งข้อมูลที่เขาอ้างถึง: GRANT ALL มีความจำเป็นในการทำให้ไซต์ของคุณทำงานได้และมีหลักฐานในอนาคต แม้แต่ในเว็บไซต์ผลิตคุณจะต้องลองทำตามคู่มือผู้ใช้

ในฐานะที่เป็นคนที่มีส่วนร่วมในรหัสไปยังคอร์ WordPress และปลั๊กอินบางส่วนฉันขอแนะนำให้คุณรักษาสิทธิ์ฐานข้อมูลเริ่มต้นตามที่แนะนำในคู่มือผู้ใช้ (ให้สิทธิ์ทั้งหมดบน ON wpdatabasename.

ซอร์สโค้ด WordPress (ทั้งในปัจจุบันและอนาคต) ถือว่าผู้ใช้ WordPress DB มีสิทธิ์ DB ทั้งหมดสำหรับฐานข้อมูล WordPress ที่กำหนด หากการตั้งค่าของคุณพลาดสิทธิ์ DB ใด ๆ คุณอาจพบปัญหาขณะอัปเกรด WordPress และเพิ่มปลั๊กอินเพิ่มเติม

ดังนั้นคุณไม่ควรใช้สิทธิ์ DB แตกต่างจากสิทธิ์ DB เริ่มต้นที่แนะนำโดยผู้ใช้ยกเว้นว่าคุณรู้ว่าคุณกำลังทำอะไรมีความต้องการเฉพาะและไม่ลืมว่าคุณมีสิทธิ์ DB ที่กำหนดเอง

หน้า Codex ได้รับการปรับปรุงเกี่ยวกับวิธีการทำเช่นนี้กับตัวอย่างในระบบและภาพหน้าจอที่หลากหลาย https://codex.wordpress.org/Installing_WordPress#Step_2:_Create_the_Database_and_a_User

การสร้างชื่อ Databse และผู้ใช้ (ผ่าน PHPMyAdmin): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin

การสร้างชื่อ Databse และผู้ใช้ (ผ่านไคลเอนต์บรรทัดคำสั่ง MySQL): https://codex.wordpress.org/Installing_WordPress#Using_the_MySQL_Client

mysql> CREATE DATABASE wpdatabasename;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wpdatabasename.* TO "wordpressusername"@"hostname"
    -> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

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