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

Cấp quyền cho bảng và cột MySQL

Cấp quyền cấp bảng

Bạn có thể tạo người dùng có quyền cấp bảng trong MySQL bằng cách thực hiện như sau:

  1. Kết nối với MySQL với tư cách người dùng bằng Create_user_priv và Grant_priv. Xác định người dùng nào có các đặc quyền này bằng cách chạy truy vấn sau. Người dùng của bạn sẽ cần đặc quyền CHỌN trên MySQL.user để chạy truy vấn.

    SELECT User, Host, Super_priv, Create_user_priv, Grant_priv from mysql.user WHERE Create_user_priv = 'Y' AND Grant_Priv = 'Y';
    
  2. Chạy truy vấn sau để tạo các câu lệnh GRANT cho người dùng bị hạn chế của bạn. Thay thế ‘mydatabase,’ ‘myuser’ và ‘myhost’ bằng thông tin cụ thể cho cơ sở dữ liệu của bạn.

    Lưu ý rằng các trích dẫn xung quanh myuser và mypassword là hai trích dẫn đơn, không phải kép. Các ký tự xung quanh máy chủ lưu trữ của tôi và TABLE_NAME, là dấu gạch ngược (phím nằm dưới phím thoát trên bàn phím của bạn).

    SELECT CONCAT('GRANT SELECT, SHOW VIEW ON mydatabase.`', TABLE_NAME, '` to ''myuser''@`myhost`;')
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'mydatabase';
    

    Ví dụ:nếu bạn muốn kết nối người dùng ‘chartio_read_only’ với cơ sở dữ liệu ‘Báo cáo’ của mình bằng ứng dụng khách chartio_connect, bạn sẽ chạy như sau:

    SELECT CONCAT('GRANT SELECT, SHOW VIEW ON Reports.`', TABLE_NAME, '` to ''chartio_read_only''@`localhost`;')
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'Reports';
    

    Nếu bạn muốn kết nối người dùng ‘chartio_direct_connect’ với cơ sở dữ liệu ‘Analytics’ của mình bằng cách sử dụng kết nối trực tiếp từ máy chủ của Chartio, bạn sẽ chạy như sau:

    SELECT CONCAT('GRANT SELECT, SHOW VIEW ON Analytics.`', TABLE_NAME, '` to ''chartio_direct_connect''@`52.6.1.1`;')
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'Analytics';
    
  3. Truy vấn sẽ cho kết quả tương tự như sau:

    GRANT SELECT, SHOW VIEW ON mydatabase.`Activity` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Marketing` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Operations` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Payments` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Plans` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Services` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Subscriptions` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Users` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Visitors` to 'myuser'@`myhost`;
    
  4. Chỉ chọn các câu lệnh cho các bảng bạn muốn cấp quyền truy cập và chạy các truy vấn đó. Ví dụ:nếu chúng tôi chỉ muốn cấp quyền truy cập vào bảng Người dùng và Khách truy cập, chúng tôi sẽ chạy:

    GRANT SELECT, SHOW VIEW ON mydatabase.`Users` to 'myuser'@`myhost`;
    GRANT SELECT, SHOW VIEW ON mydatabase.`Visitors` to 'myuser'@`myhost`;
    
  5. Cung cấp cho người dùng một mật khẩu an toàn.

    SET PASSWORD FOR 'chartio_read_only'@`localhost` = PASSWORD('top$secret');
    

    hoặc

    SET PASSWORD FOR 'chartio_direct_connect'@`52.6.1.1` = PASSWORD('top$secret');
    

Giờ đây, bạn có thể truy cập cơ sở dữ liệu của mình một cách an toàn với người dùng này và yên tâm rằng nó chỉ có quyền đối với các bảng được chỉ định.

Cấp quyền ở cấp độ cột

Quy trình cấp quyền cấp cột trên một bảng cụ thể tương tự như cấp quyền cấp bảng.

  1. Tạo các câu lệnh GRANT cho các quyền cấp cột bằng cách sử dụng truy vấn sau:

    SELECTCONCAT('GRANT SELECT (`', COLUMN_NAME, '`), SHOW VIEW ON mydatabase.`', TABLE_NAME, '` to ''myuser''@`myhost`;')
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA = 'mydatabase' AND TABLE_NAME = 'mytable';
    

    Ví dụ:nếu bạn muốn kết nối người dùng ‘chartio_read_only’ với các cột cụ thể trong bảng ‘Người dùng’ của cơ sở dữ liệu ‘Báo cáo’ bằng ứng dụng khách chartio_connect, bạn sẽ chạy như sau:

    SELECTCONCAT('GRANT SELECT (`', COLUMN_NAME, '`), SHOW VIEW ON Reports.`', TABLE_NAME, '` to ''chartio_read_only''@`localhost`;')
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA = 'Reports' AND TABLE_NAME = 'Users';
    
  2. Truy vấn sẽ dẫn đến kết quả tương tự như sau:

    GRANT SELECT (`User_ID`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Campaign_ID`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Created_Date`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Company`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`City`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`State`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Zip`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Phone_Number`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Credit_Card`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    
  3. Chỉ chọn các câu lệnh cho các cột bạn muốn cấp quyền truy cập và chạy các truy vấn đó. Ví dụ:nếu chúng tôi chỉ muốn cấp quyền truy cập vào các cột "User_ID" và "Company", chúng tôi sẽ chạy:

    GRANT SELECT (`User_ID`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    GRANT SELECT (`Company`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
    
  4. Cung cấp cho người dùng một mật khẩu an toàn.

    SET PASSWORD FOR 'chartio_read_only'@`localhost` = PASSWORD('top$secret');
    

Để biết thêm thông tin, hãy tham khảo tài liệu MySQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel 5.4 trên PHP 7.0:Ngoại lệ PDO - Không thể tìm thấy trình điều khiển (MySQL)

  2. sql tham gia dưới dạng biểu đồ venn

  3. Cách tăng kết nối tối đa trong MySQL

  4. Cách kiểm tra kết nối cơ sở dữ liệu PHP MySQL bằng Script

  5. Tính toán phần trăm trong MySQL dựa trên tổng số