Video: WEB3013 Case study 2 (Bảo mật cho website) 2025
Khi MySQL được cài đặt, nó sẽ tự động tạo ra một cơ sở dữ liệu có tên là mysql . Tất cả thông tin được sử dụng để bảo vệ dữ liệu của bạn được lưu trữ trong cơ sở dữ liệu này, bao gồm tên tài khoản, tên máy chủ, mật khẩu và đặc quyền.
Đặc quyền được lưu trữ trong cột. Định dạng của mỗi tên cột là đặc quyền _priv, trong đó đặc quyền là đặc quyền tài khoản cụ thể. Ví dụ, cột chứa ALTER đặc quyền được đặt tên là alter_priv. Giá trị trong mỗi cột đặc quyền là Y hoặc N, có nghĩa là có hoặc không.
Ví dụ, trong bảng người sử dụng, sẽ có một hàng cho một tài khoản và một cột cho alter_priv. Nếu trường tài khoản cho alter_priv chứa Y, tài khoản có thể được sử dụng để thực hiện một câu lệnh ALTER. Nếu alter_priv chứa N, tài khoản không có đặc quyền để thực hiện một câu lệnh ALTER.
Cơ sở dữ liệu mysql chứa các bảng sau lưu các đặc quyền:
-
user bảng: Bảng này lưu các đặc quyền áp dụng cho tất cả các cơ sở dữ liệu và bảng biểu. Nó chứa một hàng cho mỗi tài khoản hợp lệ bao gồm các cột tên người dùng, tên máy chủ, và mật khẩu. Máy chủ MySQL từ chối kết nối cho một tài khoản không tồn tại trong bảng này.
-
db bảng: Bảng này lưu các đặc quyền áp dụng cho một cơ sở dữ liệu cụ thể. Nó chứa một hàng cho cơ sở dữ liệu, cung cấp các đặc quyền cho một tên tài khoản và một tên máy chủ. Tài khoản phải tồn tại trong bảng người dùng để có các đặc quyền được cấp. Các đặc quyền được đưa ra trong bảng người dùng hủy bỏ đặc quyền trong bảng này.
Ví dụ, nếu bảng người dùng có một hàng cho nhà thiết kế tài khoản cung cấp các đặc quyền INSERT, nhà thiết kế có thể chèn vào tất cả các cơ sở dữ liệu. Nếu một hàng trong bảng db hiển thị N cho INSERT cho tài khoản người thiết kế trong cơ sở dữ liệu PetCatalog, bảng người dùng sẽ overrules nó, và nhà thiết kế có thể chèn vào cơ sở dữ liệu PetCatalog.
-
bảng: Bảng này điều khiển truy cập cơ sở dữ liệu, tùy thuộc vào máy chủ. Bảng host hoạt động với bảng db. Nếu một hàng trong bảng db có một trường trống cho máy chủ lưu trữ, MySQL kiểm tra bảng host để xem liệu db có một hàng ở đó hay không. Bằng cách này, bạn có thể cho phép truy cập vào một db từ một số máy chủ nhưng không phải từ những người khác. Ví dụ, giả sử bạn có hai cơ sở dữ liệu: db1 và db2. Cơ sở dữ liệu db1 có thông tin nhạy cảm, vì vậy bạn chỉ muốn một số người xem nó. Cơ sở dữ liệu db2 có thông tin mà bạn muốn mọi người xem. Nếu bạn có một hàng trong bảng db cho db1 với một trường máy chủ trống, bạn có thể có hai hàng cho db1 trong bảng chủ.
Một hàng có thể cho tất cả các đặc quyền cho người dùng kết nối từ một máy chủ cụ thể, trong khi một hàng khác có thể từ chối các đặc quyền cho người dùng kết nối từ bất kỳ máy chủ nào khác.
table_priv
-
bảng: Bảng này lưu các đặc quyền áp dụng cho các bảng cụ thể. columns_priv
-
bảng: Bảng này lưu các đặc quyền áp dụng cho các cột cụ thể. Bạn có thể xem và thay đổi các bảng trong mysql trực tiếp nếu bạn đang sử dụng tài khoản có các đặc quyền cần thiết. Bạn có thể sử dụng các truy vấn SQL như SELECT, INSERT, và UPDATE. Nếu bạn đang truy cập vào MySQL thông qua chủ của bạn, khách hàng hoặc công ty lưu trữ web, bạn có thể không có tài khoản với các đặc quyền cần thiết.