Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm hiểu về Quyền cấp bảng MySQL

Rất phổ biến khi thấy một tuyên bố cấp phép như sau cho phép truy cập vào tất cả các bảng trong một cơ sở dữ liệu nhất định.

GRANT SELECT, SHOW VIEW
ON mydatabase.*
TO myreaduser@myhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Nơi mydatabase , myreaduser , myhoostsomepassword là các biến thích hợp cho cơ sở dữ liệu của bạn. Lưu ý rằng FLUSH PRIVILEGES lệnh đặt lại các đặc quyền của MySQL và bạn sẽ không thể sử dụng các quyền của người dùng mới cho đến khi nó được chạy.

Một người dùng như vậy sẽ có thể đọc và truy cập tất cả các bảng trong cơ sở dữ liệu. Đối với ví dụ này, chúng tôi sẽ sử dụng cơ sở dữ liệu boatio có 3 bảng:boats , tripsusers .

mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| boats            |
| trips            |
| users            |
+------------------+
3 rows in set (0.00 sec)

Nếu chúng tôi muốn tạo một người dùng chỉ có quyền truy cập vào trips bảng, chúng tôi chỉ cần thay thế biểu tượng ký tự đại diện (*) đại diện cho tất cả các bảng, bằng các bảng cụ thể mà bạn muốn (trong trường hợp này là:trips ).

GRANT SELECT, SHOW VIEW
ON boatio.trips
TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Bây giờ chúng ta có thể đăng nhập với tư cách người dùng mới và chạy các bảng hiển thị để thấy rằng nó chỉ có quyền truy cập vào các trips bảng chứ không phải hai bảng khác. Người dùng mới này chỉ đơn giản là không biết các bảng khác thậm chí còn tồn tại.

$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips            |
+------------------+
1 row in set (0.00 sec)

Để cấp cho người dùng quyền truy cập vào nhiều bảng hơn, chỉ cần chạy lại cùng một GRANT câu lệnh với các tên bảng bổ sung. Ví dụ:phần sau sẽ cấp quyền truy cập vào tripsusers bảng chứ không phải boats .

GRANT SELECT, SHOW VIEW ON boatio.trips TO myreaduser@localhost IDENTIFIED BY 'somepassword';
GRANT SELECT, SHOW VIEW ON boatio.users TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Và bằng chứng:người dùng hiện có quyền truy cập vào tripsusers bảng chứ không phải boats .

$ mysql -umyreaduser boatio -psomepassword

mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips            |
| users            |
+------------------+
2 rows in set (0.00 sec)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách khôi phục MySQL Galera Cluster từ một Slave không đồng bộ

  2. Khắc phục sự cố đăng nhập PHP SQL đơn giản

  3. Kết nối với máy chủ MySQL từ xa bằng SSL từ PHP

  4. Neo4j - Xóa nút bằng Cypher

  5. Trình kích hoạt MySQL để cập nhật một trường thành giá trị của id