Người dùng cơ sở dữ liệu MySQL: Đặc quyền nào là cần thiết?


52

Hướng dẫn cài đặt ngắn cho WordPress ( "5 phút" ) nói rằng:

Tạo cơ sở dữ liệu cho WordPress trên máy chủ web của bạn, cũng như người dùng MySQL có tất cả các đặc quyền để truy cập và sửa đổi nó.

Trong khi thiết lập một blog mới một cách chuyên nghiệp, tôi đã tự hỏi làm thế nào ánh xạ tới cấu hình quyền / quyền của người dùng cơ sở dữ liệu MySQL cung cấp cho tôi:

  • Dữ liệu: SELECT , INSERT, UPDATE,DELETE
  • Định nghĩa: CREATE , ALTER,DROP
  • Thêm: INDEX
  • Hơn:
    1. LOCK TABLES
    2. REFERENCES
    3. CREATE TEMPORARY TABLES
    4. CREATE VIEW
    5. SHOW VIEW
    6. CREATE ROUTINE
    7. EXECUTE
    8. ALTER ROUTINE

Tôi khá chắc chắn cho ba nhóm đầu tiên, tôi đặt tên cho chúng là Dữ liệu, Định nghĩa và Bổ sung ở đây. Nhưng những gì về những người khác dưới mục Thêm ? Thông thường tôi sẽ nói, những thứ đó không cần thiết, nhưng tôi muốn có ý kiến ​​thứ hai.

Câu trả lời:


13

Những người khác không cần thiết như bạn chỉ ra.

Btw, những gì bạn có thể làm là, đặt điều kiện người dùng / vượt qua dựa trên trang được yêu cầu. Như không có đặc quyền với chọn / chèn / cập nhật / xóa để sử dụng bình thường và đặc quyền với các nội dung liên quan đến định nghĩa / chỉ mục ngoài việc truy cập trang nâng cấp.


1
Có bất kỳ tài liệu tham khảo nào về cách thiết lập có điều kiện người dùng / vượt qua dựa trên trang được yêu cầu trong môi trường WordPress không? TA
superjos

@superjos: Không phải tôi nhận ra từ đỉnh đầu của tôi, nhưng ý chính của nó sẽ là xác định người dùng DB bình thường chọn / chèn / cập nhật / xóa trong wp-config và khi url khớp với / trang wp-admin (có thể nâng cấp, kích hoạt chủ đề và kích hoạt plugin), để xác định người dùng thay thế có thể làm mọi thứ khác.
Denis de Bernardy

34

"Tất cả các đặc quyền" thường có nghĩa là bạn nên cung cấp mọi thứ cho người dùng. Tuy nhiên ...

Tôi đã tìm thấy ít nhất một bài viết tuyên bố rằng người dùng MySQL chỉ cần:

  • LỰA CHỌN
  • CHÈN
  • CẬP NHẬT

Tìm hiểu sâu hơn , tôi thấy rằng để hoạt động đầy đủ (cập nhật tự động, cài đặt / gỡ cài đặt trình cắm, v.v.), WordPress yêu cầu một số quyền bổ sung:

  • XÓA BỎ
  • THAY ĐỔI (để cập nhật)
  • TẠO BẢNG
  • BẢNG DROP

Ngoài ra, không được tham chiếu nhưng nó có ý nghĩa:

  • MỤC LỤC

Nhưng đó là hai tài liệu tham khảo vững chắc duy nhất tôi có thể tìm thấy được hỗ trợ bởi các ý kiến ​​được đăng ở nơi khác. Tôi vẫn khuyến khích bạn gắn bó với GRANT ALL, nhưng nếu bạn nhất định phải hạn chế sử dụng DB, hãy bắt đầu với 7 đặc quyền này và kiểm tra đầy đủ để đảm bảo mọi thứ hoạt động như mong đợi.


Cảm ơn cậu vì đã chia sẻ những suy nghĩ của mình. Đối với trang web được cài đặt, tôi đã không GRANT ALL vì đây không phải là một trang web phát triển và thay vào đó dính vào tất cả. MỤC LỤC. Có vẻ tốt cho đến nay, tôi nghĩ rằng tôi giữ nó theo dõi trong những ngày tiếp theo, đó là một trang web thực tế bao gồm. rất nhiều sử dụng plugin và như thế. Đối với INDEX tôi có thể tìm kiếm lõi và hướng dẫn sử dụng mysql một chút.
hakre

1
Chỉ cần nhớ rằng các trình cắm của bên thứ 3 có thể gọi bất kỳ câu lệnh SQL nào họ muốn ... vì vậy hãy đảm bảo bạn đã kiểm tra chính xác chúng trước khi cài đặt những thứ phụ thuộc vào các đặc quyền mà bạn đã thu hồi.
EAMann

12

Dưới đây là những gì Codex nói về việc hạn chế đặc quyền người dùng cơ sở dữ liệu:

Đối với các hoạt động bình thường của WordPress, chẳng hạn như đăng bài đăng trên blog, tải lên tệp phương tiện, đăng nhận xét, tạo người dùng WordPress mới và cài đặt plugin WordPress, người dùng cơ sở dữ liệu MySQL chỉ cần đặc quyền đọc dữ liệu và ghi dữ liệu vào cơ sở dữ liệu MySQL; CHỌN, XÁC NHẬN, CẬP NHẬT và XÓA.

Do đó, mọi đặc quyền quản trị và cấu trúc cơ sở dữ liệu khác, chẳng hạn như DROP, ALTER và GRANT đều có thể bị thu hồi. Bằng cách thu hồi các đặc quyền như vậy, bạn cũng đang cải thiện các chính sách ngăn chặn.

Lưu ý: Một số plugin, chủ đề và các bản cập nhật lớn của WordPress có thể yêu cầu thực hiện thay đổi cấu trúc cơ sở dữ liệu, chẳng hạn như thêm bảng mới hoặc thay đổi lược đồ. Trong trường hợp đó, trước khi cài đặt plugin hoặc cập nhật phần mềm tạm thời cho phép người dùng cơ sở dữ liệu các đặc quyền bắt buộc.

http://codex.wordpress.org/Hardening_WordPress


2
Tôi cố gắng thực hành nguyên tắc tối thiểu đặc quyền khi có thể. Thông tin được trích dẫn (hữu ích) không còn trong bài viết Codex được liên kết, vì vậy cảm ơn bạn đã sao chép nó ở đây.
Anthony G - công lý cho Monica

2

Liên quan đến "Lưu ý" trong bài đăng của redburn, Wordpress Codex cũng có Cảnh báo bạn cũng nên đọc về các bản cập nhật và thay đổi lược đồ cơ sở dữ liệu ...

(Chỉnh sửa: Tuy nhiên, tôi nhận thấy rằng tôi KHÔNG XEM "GRANT" trong danh sách các đặc quyền nữa khi tạo hoặc cập nhật người dùng. Có lẽ nên thêm "TẠO" vào danh sách? Có ai có thông tin về điều này không? , Tháng 3 năm 2016 -)

CẢNH BÁO:
Cố gắng cập nhật mà không có các đặc quyền này [ CHỌN, XÁC NHẬN, CẬP NHẬT, XÓA, DROP, THAY ĐỔI và CẤP] có thể gây ra vấn đề khi thay đổi lược đồ cơ sở dữ liệu xảy ra. Vì vậy, KHÔNG nên thu hồi các đặc quyền này. Nếu bạn cảm thấy cần phải làm điều này vì lý do bảo mật, thì vui lòng đảm bảo rằng bạn đã có kế hoạch sao lưu vững chắc trước tiên, với các bản sao lưu toàn bộ cơ sở dữ liệu thông thường mà bạn đã kiểm tra là hợp lệ và có thể dễ dàng khôi phục. Nâng cấp cơ sở dữ liệu thất bại thường có thể được giải quyết bằng cách khôi phục cơ sở dữ liệu trở lại phiên bản cũ, cấp quyền phù hợp và sau đó cho phép WordPress thử cập nhật lại cơ sở dữ liệu. Khôi phục cơ sở dữ liệu sẽ đưa nó trở lại phiên bản cũ đó và màn hình quản trị WordPress sau đó sẽ phát hiện phiên bản cũ và cho phép bạn chạy các lệnh SQL cần thiết trên đó. Hầu hết các nâng cấp WordPress không thay đổi lược đồ, nhưng một số thì làm. Chỉ nâng cấp điểm chính (3,7 lên 3,8, ví dụ) sẽ thay đổi lược đồ. Nâng cấp nhỏ (3.8 đến 3.8.1) thường sẽ không. Tuy nhiên, giữ một bản sao lưu thường xuyên.

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


0

Ý kiến ​​của tôi cũng giống như @EAMann ở trên, cũng như các nguồn mà anh ấy tham khảo: GRANT ALL là cần thiết để đảm bảo trang web của bạn hoạt động tốt và bằng chứng trong tương lai. Ngay cả trên một trang web sản xuất, bạn sẽ cố gắng tuân theo hướng dẫn sử dụng.

Là người đóng góp mã cho lõi WordPress và một vài plugin, tôi khuyên bạn nên giữ lại các đặc quyền DB mặc định như được đề xuất trong hướng dẫn sử dụng (GRANT ALL PRIVILEGES ON wpdatabasename. * TO "wordpressusername" @ "hostname").

Mã nguồn WordPress (cả hiện tại và tương lai) giả sử người dùng WordPress DB có tất cả các đặc quyền DB cho cơ sở dữ liệu WordPress đã cho. Nếu thiết lập của bạn bỏ lỡ bất kỳ đặc quyền DB nào, bạn có thể gặp sự cố khi nâng cấp WordPress và thêm nhiều plugin.

Vì vậy, bạn thực sự không nên sử dụng các đặc quyền DB khác với các đặc quyền DB mặc định được hướng dẫn sử dụng, trừ khi bạn biết bạn đang làm gì, có nhu cầu rất cụ thể và sẽ không quên các đặc quyền DB tùy chỉnh của bạn.

Trang Codex đã được cập nhật về cách thực hiện điều này với các ví dụ trên các hệ thống và ảnh chụp màn hình khác nhau. https://codex.wordpress.org/Installing_WordPress#Step_2:_Create_the_Database_and_a_User

Tạo tên và người dùng Databse (thông qua PHPMyAdmin): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin

Tạo tên và người dùng Databse (thông qua ứng dụng khách dòng lệnh MySQL): https://codex.wordpress.org/Installing_WordPress#Using_the_MyQuery_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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.