Hướng dẫn mysql grant create schema - cấp mysql tạo lược đồ

Hướng dẫn mysql grant create schema - cấp mysql tạo lược đồ

Đã đăng vào thg 10 29, 2017 4:23 SA 3 phút đọc 3 phút đọc

About MySQL

MYSQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở giúp cho người dùng lưu trữ, tổ chức và sau đó lấy dữ liệu. Nó có nhiều lựa chọn cung cấp cho người dùng để thao tao với bảng và cơ sở dữ liệu. Bài viết này hướng dẫn việc tạo user và cấp quyền trong MYSQL.

How to Create a New User

Thông thường chúng ta thường thao tác với database với đầy đủ các quyền, nhưng nhiều trường hợp chúng ta không muốn ai đó truy cập với đầy đủ các quyền. Tạo mới user bằng câu lệnh sau:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Thật tệ, ngay trong thời điểm vừa mới tạo mới user thì user chưa có quyền gì. Ngay cả khi cố đăng nhập vào thì cung khỗng thể vào được màn hình shell. Vì thế chúng ta cần cung cấp quyền cho họ để có thể truy cập thông tin mà họ cần.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

dấu * ở trên tương ứng với cơ sở dữ liệu và bảng mà user có thể truy cập - cụ thể là lệnh này cho phép người dùng thêm, sửa, xóa thực thi các công việc trên tất cả các bảng trong cơ sở dữ liệu. Để các quyền trên có hiệu lực thì bạn dùng lệnh:

FLUSH PRIVILEGES;

How To Grant Different User Permissions

Dưới đây là danh sách các lệnh thường dùng để gán quyền cho user.

  • ALL PRIVILEGES – như ở trên ta thấy, lệnh này cho phép MySQL user thực hiện toàn quyền trên databases (hoặc 1 vài db được thiết lập)
  • CREATE – Cho phép user tạo mới tables hoặc databases
  • DROP – Cho phép xóa tables hoặc databases
  • DELETE – Cho phép xóa bản ghi dữ liệu trong bảng tables
  • INSERT – Cho phép thêm bản ghi mới vào bảng csdl
  • SELECT – Cho phép sử dụng lệnh Select để tìm kiếm dữ liệu
  • UPDATE – Cho phép cập nhật csdl
  • GRANT OPTION – Cho phép gán hoặc xóa quyền của người dùng khác.

Để thiết lập quyền cụ thể cho user thì dùng lệnh sau:

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;

Nếu bạn muốn cho phép user truy cập tất cả databases hoặc tất cả bảng, hãy dùng dấu sao (*) thay cho tên database hoặc table.

Mỗi lần bạn cập nhật hay thay đổi quyền hãy dùng lệnh Flush Privileges đảm bảo các thay đổi có hiệu lực.

Nếu cần thu hồi lại quyền của user, hãy dùng lệnh REVOKE với biểu mẫu lệnh sau đây:

REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';

Hoặc có thể xóa cơ sở dữ liệu với lệnh DROP, bạn cũng có thể dùng lệnh để xóa hẳn user đó đi.

DROP USER 'demo'@'localhost';

Để kiểm tra user mới được tạo, logout bằng lệnh

quit

và login lại bằng lệnh:

mysql -u[username] -p

sau đó nhập password.

Trên đây là hướng dẫn tạo mới user và custom permissions cho user. Hi vọng giúp ích được phần nào cho các bạn. Link source: https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql

All rights reserved

13.7.1.6 & NBSP; Tuyên bố cấp

GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user_or_role [, user_or_role] ...
    [WITH GRANT OPTION]
    [AS user
        [WITH ROLE
            DEFAULT
          | NONE
          | ALL
          | ALL EXCEPT role [, role ] ...
          | role [, role ] ...
        ]
    ]
}

GRANT PROXY ON user_or_role
    TO user_or_role [, user_or_role] ...
    [WITH GRANT OPTION]

GRANT role [, role] ...
    TO user_or_role [, user_or_role] ...
    [WITH ADMIN OPTION]

object_type: {
    TABLE
  | FUNCTION
  | PROCEDURE
}

priv_level: {
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name
}

user_or_role: {
    user (see Section 6.2.4, “Specifying Account Names”)
  | role (see Section 6.2.5, “Specifying Role Names”)
}

Câu lệnh

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 gán các đặc quyền và vai trò cho tài khoản và vai trò của người dùng MySQL. Có một số khía cạnh của tuyên bố
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0, được mô tả theo các chủ đề sau:

  • Cấp tổng quan chung

  • Đối tượng Trích dẫn hướng dẫn

  • Tên tài khoản

  • Đặc quyền được hỗ trợ bởi MySQL

  • Đặc quyền toàn cầu

  • Đặc quyền cơ sở dữ liệu

  • Đặc quyền bảng

  • Đặc quyền cột

  • Được lưu trữ đặc quyền thường xuyên

  • Đặc quyền người dùng proxy

  • Cấp vai trò

  • Điều khoản

    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2 và các hạn chế đặc quyền

  • Các đặc điểm tài khoản khác

  • MySQL và các phiên bản SQL tiêu chuẩn của Grant

Cấp tổng quan chung

Đối tượng Trích dẫn hướng dẫn

  • Tên tài khoản

  • Đặc quyền được hỗ trợ bởi MySQL

    • Đặc quyền toàn cầu

    • Đặc quyền cơ sở dữ liệu

    • Đặc quyền bảng

Đặc quyền cột

Được lưu trữ đặc quyền thường xuyên

Đặc quyền người dùng proxy

Cấp vai trò

Điều khoản

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
2 và các hạn chế đặc quyền

GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';

Các đặc điểm tài khoản khác

MySQL và các phiên bản SQL tiêu chuẩn của Grant

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
0

Tuyên bố

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 cho phép các quản trị viên hệ thống cấp các đặc quyền và vai trò, có thể được cấp cho tài khoản và vai trò của người dùng. Các hạn chế cú pháp này được áp dụng:mysql program,
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 responds with
DROP USER 'demo'@'localhost';
6 when executed successfully. To determine what privileges result from the operation, use
DROP USER 'demo'@'localhost';
7. See Section 13.7.7.21, “SHOW GRANTS Statement”.

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 không thể trộn lẫn việc cấp cả hai đặc quyền và vai trò trong cùng một tuyên bố. Một tuyên bố
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 đã cho phải cấp cho các đặc quyền hoặc vai trò.

Điều khoản

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
6 phân biệt liệu tuyên bố có cấp các đặc quyền hay vai trò:

Với

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
6, tuyên bố cấp đặc quyền.

Không có

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
6, tuyên bố cấp vai trò.

Nó được phép gán cả hai đặc quyền và vai trò cho một tài khoản, nhưng bạn phải sử dụng các câu lệnh

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 riêng biệt, mỗi tuyên bố có cú pháp phù hợp với những gì sẽ được cấp.. Never alter the structure of tables in the
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
3 system schema in any manner except by means of the procedure described in Section 2.11, “Upgrading MySQL”.

Đối tượng Trích dẫn hướng dẫn

Một số đối tượng trong các câu lệnh

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 có thể được trích dẫn, mặc dù trích dẫn là tùy chọn trong nhiều trường hợp: tài khoản, vai trò, cơ sở dữ liệu, bảng, cột và tên thông thường. Ví dụ: nếu giá trị
quit
4 hoặc
quit
5 trong tên tài khoản là hợp pháp như một mã định danh chưa được trích xuất, bạn không cần phải trích dẫn nó. Tuy nhiên, các dấu ngoặc kép là cần thiết để chỉ định chuỗi
quit
4 chứa các ký tự đặc biệt (như
quit
7) hoặc chuỗi
quit
5 chứa các ký tự đặc biệt hoặc ký tự ký tự đại diện như
quit
9 (ví dụ:
mysql -u[username] -p
0). Trích dẫn tên người dùng và tên máy chủ riêng biệt.

Để chỉ định các giá trị được trích dẫn:

  • Trích dẫn cơ sở dữ liệu, bảng, cột và tên thông thường làm định danh.

  • Trích dẫn tên người dùng và tên máy chủ dưới dạng định danh hoặc là chuỗi.

  • Trích dẫn mật khẩu dưới dạng chuỗi.

Đối với các hướng dẫn trích xuất chuỗi và định danh, xem phần & nbsp; 9.1.1, Chuỗi Chuỗi chữ, và Phần & NBSP; 9.2, Tên đối tượng Schema.

Các ký tự đại diện

mysql -u[username] -p
1 và
quit
9 được cho phép khi chỉ định tên cơ sở dữ liệu trong các câu lệnh
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 cấp đặc quyền ở cấp cơ sở dữ liệu (________ 74.*). Ví dụ, điều này có nghĩa là sử dụng ký tự
mysql -u[username] -p
1 như một phần của tên cơ sở dữ liệu, chỉ định nó bằng cách sử dụng ký tự thoát
mysql -u[username] -p
6 là
mysql -u[username] -p
7 trong câu lệnh
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0, để ngăn người dùng có thể truy cập vào cơ sở dữ liệu bổ sung phù hợp với mẫu ký tự đại diện (đối với Ví dụ,
mysql -u[username] -p
9).

Trong các bài tập đặc quyền, MySQL diễn giải các sự xuất hiện của các ký tự

mysql -u[username] -p
1 và
quit
9 SQL trong tên cơ sở dữ liệu dưới dạng các ký tự theo nghĩa đen trong những trường hợp này:

  • Khi một tên cơ sở dữ liệu không được sử dụng để cấp các đặc quyền ở cấp cơ sở dữ liệu, nhưng như một vòng loại đã cấp các đặc quyền cho một số đối tượng khác như bảng hoặc thói quen (ví dụ: ____ 82 .__ 83).

  • Kích hoạt

    GRANT
        priv_type [(column_list)]
          [, priv_type [(column_list)]] ...
        ON [object_type] priv_level
        TO user_or_role [, user_or_role] ...
        [WITH GRANT OPTION]
        [AS user
            [WITH ROLE
                DEFAULT
              | NONE
              | ALL
              | ALL EXCEPT role [, role ] ...
              | role [, role ] ...
            ]
        ]
    }
    
    GRANT PROXY ON user_or_role
        TO user_or_role [, user_or_role] ...
        [WITH GRANT OPTION]
    
    GRANT role [, role] ...
        TO user_or_role [, user_or_role] ...
        [WITH ADMIN OPTION]
    
    object_type: {
        TABLE
      | FUNCTION
      | PROCEDURE
    }
    
    priv_level: {
        *
      | *.*
      | db_name.*
      | db_name.tbl_name
      | tbl_name
      | db_name.routine_name
    }
    
    user_or_role: {
        user (see Section 6.2.4, “Specifying Account Names”)
      | role (see Section 6.2.5, “Specifying Role Names”)
    }
    4 khiến MYSQL giải thích các ký tự đại diện không được xác định
    mysql -u[username] -p
    
    1 và
    quit
    
    9 trong tên cơ sở dữ liệu là ký tự nghĩa đen, giống như chúng đã bị thoát ra là
    mysql -u[username] -p
    
    7 và
    GRANT
        priv_type [(column_list)]
          [, priv_type [(column_list)]] ...
        ON [object_type] priv_level
        TO user_or_role [, user_or_role] ...
        [WITH GRANT OPTION]
        [AS user
            [WITH ROLE
                DEFAULT
              | NONE
              | ALL
              | ALL EXCEPT role [, role ] ...
              | role [, role ] ...
            ]
        ]
    }
    
    GRANT PROXY ON user_or_role
        TO user_or_role [, user_or_role] ...
        [WITH GRANT OPTION]
    
    GRANT role [, role] ...
        TO user_or_role [, user_or_role] ...
        [WITH ADMIN OPTION]
    
    object_type: {
        TABLE
      | FUNCTION
      | PROCEDURE
    }
    
    priv_level: {
        *
      | *.*
      | db_name.*
      | db_name.tbl_name
      | tbl_name
      | db_name.routine_name
    }
    
    user_or_role: {
        user (see Section 6.2.4, “Specifying Account Names”)
      | role (see Section 6.2.5, “Specifying Role Names”)
    }
    8. Bởi vì điều này thay đổi cách MySQL diễn giải các đặc quyền, nên có thể nên tránh các ký tự ký tự đại diện không được phân loại trong các bài tập đặc quyền để cài đặt trong đó
    GRANT
        priv_type [(column_list)]
          [, priv_type [(column_list)]] ...
        ON [object_type] priv_level
        TO user_or_role [, user_or_role] ...
        [WITH GRANT OPTION]
        [AS user
            [WITH ROLE
                DEFAULT
              | NONE
              | ALL
              | ALL EXCEPT role [, role ] ...
              | role [, role ] ...
            ]
        ]
    }
    
    GRANT PROXY ON user_or_role
        TO user_or_role [, user_or_role] ...
        [WITH GRANT OPTION]
    
    GRANT role [, role] ...
        TO user_or_role [, user_or_role] ...
        [WITH ADMIN OPTION]
    
    object_type: {
        TABLE
      | FUNCTION
      | PROCEDURE
    }
    
    priv_level: {
        *
      | *.*
      | db_name.*
      | db_name.tbl_name
      | tbl_name
      | db_name.routine_name
    }
    
    user_or_role: {
        user (see Section 6.2.4, “Specifying Account Names”)
      | role (see Section 6.2.5, “Specifying Role Names”)
    }
    4 có thể được bật. Để biết thêm thông tin, hãy xem Phần & NBSP; 6.2.12, Hạn chế đặc quyền bằng cách sử dụng Revokes một phần.

Tên tài khoản

Giá trị

GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0 trong câu lệnh
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 cho biết tài khoản MySQL mà câu lệnh được áp dụng. Để phù hợp với quyền cấp cho người dùng từ máy chủ tùy ý, MySQL hỗ trợ chỉ định giá trị
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0 trong biểu mẫu '________ 64'@'________ 65'.'
quit
4'@'
quit
5'
.

Bạn có thể chỉ định ký tự đại diện trong tên máy chủ. Ví dụ: '

quit
4'@'%.example.com' áp dụng cho
quit
4 cho bất kỳ máy chủ nào trong miền
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
7 và '
quit
4'@'198.51.100.'
quit
4'@'%.example.com'
applies to
quit
4 for any host in the
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
7 domain, and '
quit
4'@'198.51.100.%'
applies to
quit
4 for any host in the
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
00 class C subnet.

Mẫu đơn giản '

quit
4' là từ đồng nghĩa với '________ 64'@'%'.'
quit
4'
is a synonym for '
quit
4'@'%'
.

MySQL không hỗ trợ ký tự đại diện trong tên người dùng. Để chỉ người dùng ẩn danh, chỉ định tài khoản có tên người dùng trống với câu lệnh

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0:. To refer to an anonymous user, specify an account with an empty user name with the
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 statement:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
1

Trong trường hợp này, bất kỳ người dùng nào kết nối từ máy chủ cục bộ với mật khẩu chính xác cho người dùng ẩn danh đều được phép truy cập, với các đặc quyền liên quan đến tài khoản người dùng ẩn danh.

Để biết thêm thông tin về tên người dùng và giá trị tên máy chủ trong tên tài khoản, xem Phần & NBSP; 6.2.4, Chỉ định tên tài khoản.

Cảnh báo

Nếu bạn cho phép người dùng ẩn danh cục bộ kết nối với máy chủ MySQL, bạn cũng nên cấp đặc quyền cho tất cả người dùng địa phương là '________ 64'@'localhost'. Mặt khác, người dùng ẩn danh tài khoản

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
05 trong bảng hệ thống
quit
1 được sử dụng khi người dùng được đặt tên cố gắng đăng nhập vào máy chủ MySQL từ máy cục bộ. Để biết chi tiết, xem Phần & NBSP; 6.2.6, Kiểm soát truy cập, Giai đoạn 1: Xác minh kết nối.'
quit
4'@'localhost'
. Otherwise, the anonymous user account for
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
05 in the
quit
1 system table is used when named users try to log in to the MySQL server from the local machine. For details, see Section 6.2.6, “Access Control, Stage 1: Connection Verification”.

Để xác định xem vấn đề này có áp dụng cho bạn hay không, hãy thực hiện truy vấn sau, liệt kê bất kỳ người dùng ẩn danh nào:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
2

Để tránh vấn đề vừa được mô tả, hãy xóa tài khoản người dùng ẩn danh cục bộ bằng cách sử dụng câu lệnh này:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
3

Đặc quyền được hỗ trợ bởi MySQL

Các bảng sau đây tóm tắt các loại đặc quyền tĩnh và động ____107 có thể được chỉ định cho các câu lệnh

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 và
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
9 và các mức có thể được cấp cho mỗi đặc quyền. Để biết thêm thông tin về từng đặc quyền, hãy xem Phần & NBSP; 6.2.2, Đặc quyền được cung cấp bởi MySQL. Để biết thông tin về sự khác biệt giữa các đặc quyền tĩnh và động, hãy xem các đặc quyền tĩnh so với động.

Bảng & NBSP;

Đặc quyềnÝ nghĩa và mức độ có thể cấp
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
10
Cấp tất cả các đặc quyền ở cấp truy cập được chỉ định ngoại trừ
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1 và
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
12.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
13
Cho phép sử dụng
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
14. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
15
Cho phép các thói quen được lưu trữ được thay đổi hoặc bỏ. Cấp độ: Toàn cầu, cơ sở dữ liệu, thói quen.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
16
Bật cơ sở dữ liệu và tạo bảng. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
17
Cho phép tạo vai trò. Cấp độ: Toàn cầu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
18
Cho phép tạo ra thường xuyên được lưu trữ. Cấp độ: Toàn cầu, cơ sở dữ liệu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
19
Kích hoạt các không gian bảng và các nhóm tệp nhật ký được tạo, thay đổi hoặc bỏ. Cấp độ: Toàn cầu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
20
Cho phép sử dụng
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
21. Cấp độ: Toàn cầu, cơ sở dữ liệu.
DROP USER 'demo'@'localhost';
2
Cho phép sử dụng
DROP USER 'demo'@'localhost';
2,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
24,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
25 và
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
26. Cấp độ: Toàn cầu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
27
Cho phép các chế độ xem được tạo hoặc thay đổi. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
28
Cho phép sử dụng
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
28. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
30
Bật cơ sở dữ liệu, bảng và lượt xem được bỏ. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
31
Cho phép các vai trò được bỏ. Cấp độ: Toàn cầu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
32
Cho phép sử dụng các sự kiện cho Trình lập lịch sự kiện. Cấp độ: Toàn cầu, cơ sở dữ liệu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
33
Cho phép người dùng thực hiện các thói quen được lưu trữ. Cấp độ: Toàn cầu, cơ sở dữ liệu, thói quen.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
34
Cho phép người dùng khiến máy chủ đọc hoặc ghi tệp. Cấp độ: Toàn cầu.
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1
Cho phép các đặc quyền được cấp hoặc xóa khỏi các tài khoản khác. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng, thói quen, proxy.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
36
Cho phép các chỉ mục được tạo hoặc bỏ. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
37
Cho phép sử dụng
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
37. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng, cột.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
39
Cho phép sử dụng
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
39 trên các bảng mà bạn có đặc quyền
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41. Cấp độ: Toàn cầu, cơ sở dữ liệu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
42
Cho phép người dùng xem tất cả các quy trình với
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
43. Cấp độ: Toàn cầu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
12
Bật proxy người dùng. Cấp độ: Từ người dùng đến người dùng.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
45
Cho phép tạo khóa nước ngoài. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng, cột.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
46
Cho phép sử dụng các hoạt động
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
47. Cấp độ: Toàn cầu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
48
Cho phép người dùng hỏi nơi máy chủ nguồn hoặc bản sao đang ở. Cấp độ: Toàn cầu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
49
Cho phép các bản sao đọc các sự kiện nhật ký nhị phân từ nguồn. Cấp độ: Toàn cầu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41
Cho phép sử dụng
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng, cột.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
52
Bật
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
52 để hiển thị tất cả các cơ sở dữ liệu. Cấp độ: Toàn cầu.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
54
Cho phép sử dụng
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
55. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
56
Cho phép sử dụng tắt máy mysqladmin. Cấp độ: Toàn cầu.mysqladmin shutdown. Level: Global.
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
7
Cho phép sử dụng các hoạt động quản trị khác như
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
58,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
59,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
60,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
61,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
62 và lệnh gỡ lỗi MySQLadmin. Cấp độ: Toàn cầu.mysqladmin debug command. Level: Global.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
63
Bật hoạt động kích hoạt. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng.
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
2
Cho phép sử dụng
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
2. Cấp độ: Toàn cầu, cơ sở dữ liệu, bảng, cột.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
66
Từ đồng nghĩa với "không có đặc quyền"no privileges


Một kích hoạt được liên kết với một bảng. Để tạo hoặc thả trình kích hoạt, bạn phải có đặc quyền

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
63 cho bảng, không phải là trình kích hoạt.

Trong các tuyên bố

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0, đặc quyền
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
69 hoặc
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
12 phải được đặt tên bởi chính nó và không thể được chỉ định cùng với các đặc quyền khác.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
69 là viết tắt của tất cả các đặc quyền có sẵn cho cấp độ mà các đặc quyền sẽ được cấp ngoại trừ các đặc quyền
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1 và
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
12.

Thông tin tài khoản MySQL được lưu trữ trong các bảng của lược đồ hệ thống

REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
3. Để biết thêm chi tiết, hãy tham khảo Phần & NBSP; 6.2, Kiểm soát truy cập và quản lý tài khoản, trong đó thảo luận về lược đồ hệ thống
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
3 và hệ thống kiểm soát truy cập rộng rãi.

Nếu các bảng cấp giữ các hàng đặc quyền có chứa cơ sở dữ liệu trường hợp hỗn hợp hoặc tên bảng và biến hệ thống

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
76 được đặt thành giá trị khác,
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
9 không thể được sử dụng để thu hồi các đặc quyền này. Nó là cần thiết trong các trường hợp như vậy để thao tác trực tiếp các bảng cấp. .

Các đặc quyền có thể được cấp ở một số cấp độ, tùy thuộc vào cú pháp được sử dụng cho mệnh đề

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
6. Đối với
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
9, cú pháp
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
6 tương tự chỉ định các đặc quyền để xóa.

Đối với các cấp độ toàn cầu, cơ sở dữ liệu, bảng và thông thường,

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
84 chỉ gán các đặc quyền tồn tại ở cấp độ bạn đang cấp. Ví dụ: ________ 185.* là một tuyên bố cấp cơ sở dữ liệu, do đó, nó không cấp bất kỳ đặc quyền chỉ dành cho toàn cầu nào như
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
34. Cấp
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
87 không gán đặc quyền
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1 hoặc
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
12.

Điều khoản

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
90, nếu có, nên được chỉ định là
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
91,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
92 hoặc
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
93 khi đối tượng sau là bảng, hàm được lưu trữ hoặc quy trình được lưu trữ.

Các đặc quyền mà người dùng giữ cho cơ sở dữ liệu, bảng, cột hoặc thói quen được hình thành một cách phụ thuộc dưới dạng

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
94 logic của các đặc quyền tài khoản ở mỗi cấp đặc quyền, bao gồm cả cấp độ toàn cầu. Không thể từ chối một đặc quyền được cấp ở cấp độ cao hơn do không có đặc quyền đó ở cấp độ thấp hơn. Ví dụ: Tuyên bố này cấp cho các đặc quyền
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41 và
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
37 trên toàn cầu:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
4

Các đặc quyền được cấp toàn cầu áp dụng cho tất cả các cơ sở dữ liệu, bảng và cột, mặc dù không được cấp ở bất kỳ cấp thấp nào.

Kể từ MySQL 8.0.16, có thể từ chối rõ ràng một đặc quyền được cấp ở cấp độ toàn cầu bằng cách thu hồi nó cho các cơ sở dữ liệu cụ thể, nếu biến hệ thống

GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user_or_role [, user_or_role] ...
    [WITH GRANT OPTION]
    [AS user
        [WITH ROLE
            DEFAULT
          | NONE
          | ALL
          | ALL EXCEPT role [, role ] ...
          | role [, role ] ...
        ]
    ]
}

GRANT PROXY ON user_or_role
    TO user_or_role [, user_or_role] ...
    [WITH GRANT OPTION]

GRANT role [, role] ...
    TO user_or_role [, user_or_role] ...
    [WITH ADMIN OPTION]

object_type: {
    TABLE
  | FUNCTION
  | PROCEDURE
}

priv_level: {
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name
}

user_or_role: {
    user (see Section 6.2.4, “Specifying Account Names”)
  | role (see Section 6.2.5, “Specifying Role Names”)
}
4 được bật:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
5

Kết quả của các câu trước là

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41 áp dụng trên toàn cầu cho tất cả các bảng, trong khi
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
37 và
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
2 áp dụng trên toàn cầu ngoại trừ các bảng trong
FLUSH PRIVILEGES;
01. Truy cập tài khoản vào
FLUSH PRIVILEGES;
01 chỉ được đọc.

Chi tiết về quy trình kiểm tra đặc quyền được trình bày trong Phần & NBSP; 6.2.7, Kiểm soát truy cập, Giai đoạn 2: Yêu cầu Xác minh.

Nếu bạn đang sử dụng các đặc quyền bảng, cột hoặc thường xuyên cho ngay cả một người dùng, máy chủ sẽ kiểm tra bảng, cột và đặc quyền thường xuyên cho tất cả người dùng và điều này làm chậm MySQL một chút. Tương tự, nếu bạn giới hạn số lượng truy vấn, cập nhật hoặc kết nối cho bất kỳ người dùng nào, máy chủ phải theo dõi các giá trị này.

MySQL cho phép bạn cấp các đặc quyền trên cơ sở dữ liệu hoặc bảng không tồn tại. Đối với các bảng, các đặc quyền được cấp phải bao gồm đặc quyền

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
16. Hành vi này là theo thiết kế và được dự định để cho phép quản trị viên cơ sở dữ liệu chuẩn bị tài khoản người dùng và đặc quyền cho cơ sở dữ liệu hoặc bảng sẽ được tạo sau đó.This behavior is by design, and is intended to enable the database administrator to prepare user accounts and privileges for databases or tables that are to be created at a later time.

Quan trọng

MySQL không tự động thu hồi bất kỳ đặc quyền nào khi bạn bỏ cơ sở dữ liệu hoặc bảng. Tuy nhiên, nếu bạn bỏ một thói quen, bất kỳ đặc quyền cấp thói quen nào được cấp cho thói quen đó đều bị thu hồi.. However, if you drop a routine, any routine-level privileges granted for that routine are revoked.

Đặc quyền toàn cầu

Các đặc quyền toàn cầu là hành chính hoặc áp dụng cho tất cả các cơ sở dữ liệu trên một máy chủ nhất định. Để gán các đặc quyền toàn cầu, hãy sử dụng cú pháp

FLUSH PRIVILEGES;
04:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
6

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
19,
DROP USER 'demo'@'localhost';
2,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
34,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
42,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
46,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
48,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
49,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
52,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
56 và
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
7 đặc quyền tĩnh là hành chính và chỉ có thể được cấp trên toàn cầu.

Các đặc quyền năng động đều là toàn cầu và chỉ có thể được cấp trên toàn cầu.

Các đặc quyền khác có thể được cấp trên toàn cầu hoặc ở cấp độ cụ thể hơn.

Hiệu quả của

REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1 được cấp ở cấp độ toàn cầu khác nhau đối với các đặc quyền tĩnh và động:

  • REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
    
    1 được cấp cho bất kỳ đặc quyền toàn cầu tĩnh nào áp dụng cho tất cả các đặc quyền toàn cầu tĩnh.

  • REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
    
    1 được cấp cho bất kỳ đặc quyền động nào chỉ áp dụng cho đặc quyền động đó.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
84 ở cấp độ toàn cầu cấp tất cả các đặc quyền toàn cầu tĩnh và tất cả các đặc quyền động hiện đã đăng ký. Một đặc quyền động đã đăng ký sau khi thực hiện tuyên bố
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 không được cấp hồi tố cho bất kỳ tài khoản nào.

MySQL lưu trữ các đặc quyền toàn cầu trong bảng hệ thống

quit
1.

Đặc quyền cơ sở dữ liệu

Các đặc quyền cơ sở dữ liệu áp dụng cho tất cả các đối tượng trong một cơ sở dữ liệu nhất định. Để gán các đặc quyền cấp cơ sở dữ liệu, hãy sử dụng ____ 221.* Cú pháp:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
7

Nếu bạn sử dụng cú pháp

FLUSH PRIVILEGES;
22 (thay vì
FLUSH PRIVILEGES;
04), các đặc quyền được chỉ định ở cấp cơ sở dữ liệu cho cơ sở dữ liệu mặc định. Một lỗi xảy ra nếu không có cơ sở dữ liệu mặc định.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
16,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
30,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
32,
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
39 và
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
45 có thể được chỉ định ở cấp cơ sở dữ liệu. Bảng hoặc đặc quyền thường xuyên cũng có thể được chỉ định ở cấp cơ sở dữ liệu, trong trường hợp đó chúng áp dụng cho tất cả các bảng hoặc thói quen trong cơ sở dữ liệu.

MySQL lưu trữ các đặc quyền cơ sở dữ liệu trong bảng hệ thống

FLUSH PRIVILEGES;
30.

Đặc quyền bảng

Đặc quyền bảng áp dụng cho tất cả các cột trong một bảng nhất định. Để gán các đặc quyền cấp bảng, hãy sử dụng cú pháp

FLUSH PRIVILEGES;
31:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
8

Nếu bạn chỉ định

GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user_or_role [, user_or_role] ...
    [WITH GRANT OPTION]
    [AS user
        [WITH ROLE
            DEFAULT
          | NONE
          | ALL
          | ALL EXCEPT role [, role ] ...
          | role [, role ] ...
        ]
    ]
}

GRANT PROXY ON user_or_role
    TO user_or_role [, user_or_role] ...
    [WITH GRANT OPTION]

GRANT role [, role] ...
    TO user_or_role [, user_or_role] ...
    [WITH ADMIN OPTION]

object_type: {
    TABLE
  | FUNCTION
  | PROCEDURE
}

priv_level: {
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name
}

user_or_role: {
    user (see Section 6.2.4, “Specifying Account Names”)
  | role (see Section 6.2.5, “Specifying Role Names”)
}
3 thay vì
FLUSH PRIVILEGES;
33, câu lệnh áp dụng cho
GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user_or_role [, user_or_role] ...
    [WITH GRANT OPTION]
    [AS user
        [WITH ROLE
            DEFAULT
          | NONE
          | ALL
          | ALL EXCEPT role [, role ] ...
          | role [, role ] ...
        ]
    ]
}

GRANT PROXY ON user_or_role
    TO user_or_role [, user_or_role] ...
    [WITH GRANT OPTION]

GRANT role [, role] ...
    TO user_or_role [, user_or_role] ...
    [WITH ADMIN OPTION]

object_type: {
    TABLE
  | FUNCTION
  | PROCEDURE
}

priv_level: {
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name
}

user_or_role: {
    user (see Section 6.2.4, “Specifying Account Names”)
  | role (see Section 6.2.5, “Specifying Role Names”)
}
3 trong cơ sở dữ liệu mặc định. Một lỗi xảy ra nếu không có cơ sở dữ liệu mặc định.

Các giá trị

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
07 cho phép ở cấp bảng là
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
13,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
27,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
16,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
28,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
30,
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
36,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
37,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
45,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41, ____.

Đặc quyền cấp bảng áp dụng cho các bảng và chế độ xem cơ sở. Chúng không áp dụng cho các bảng được tạo bằng

FLUSH PRIVILEGES;
49, ngay cả khi tên bảng khớp. Để biết thông tin về các đặc quyền bảng
FLUSH PRIVILEGES;
50, xem Phần & NBSP; 13.1.20.2, Tạo Tuyên bố bảng tạm thời.

MYSQL lưu trữ các đặc quyền bảng trong bảng hệ thống

FLUSH PRIVILEGES;
51.

Đặc quyền cột

Đặc quyền cột áp dụng cho các cột đơn trong một bảng đã cho. Mỗi đặc quyền được cấp ở cấp cột phải được theo sau bởi các cột hoặc cột, được đặt trong ngoặc đơn.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
9

Các giá trị

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
07 cho phép cho một cột (nghĩa là khi bạn sử dụng mệnh đề
FLUSH PRIVILEGES;
53) là
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
37,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
45,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41 và
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
2.

MySQL lưu trữ các đặc quyền cột trong bảng hệ thống

FLUSH PRIVILEGES;
58.

Được lưu trữ đặc quyền thường xuyên

Các đặc quyền

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
15,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
18,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
33 và
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1 áp dụng cho các thói quen được lưu trữ (quy trình và chức năng). Chúng có thể được cấp ở cấp độ toàn cầu và cơ sở dữ liệu. Ngoại trừ
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
18, các đặc quyền này có thể được cấp ở cấp độ thường quy cho các thói quen riêng lẻ.

FLUSH PRIVILEGES;
0

Các giá trị

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
07 cho phép ở cấp độ thường quy là
FLUSH PRIVILEGES;
65,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
33 và
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
18 không phải là một đặc quyền cấp thông thường vì bạn phải có đặc quyền ở cấp độ toàn cầu hoặc cơ sở dữ liệu để tạo ra một thói quen ngay từ đầu.

MySQL lưu trữ các đặc quyền cấp thường xuyên trong bảng hệ thống

FLUSH PRIVILEGES;
69.

Đặc quyền người dùng proxy

Đặc quyền

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
12 cho phép một người dùng là proxy cho người khác. Người dùng proxy mạo danh hoặc lấy danh tính của người dùng proxied; Đó là, nó giả định các đặc quyền của người dùng ủy quyền.

FLUSH PRIVILEGES;
1

Khi

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
12 được cấp, nó phải là đặc quyền duy nhất được đặt tên trong tuyên bố
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 và tùy chọn
FLUSH PRIVILEGES;
73 được phép duy nhất là
FLUSH PRIVILEGES;
74.

Proxy yêu cầu người dùng proxy xác thực thông qua một plugin trả về tên của người dùng proxied cho máy chủ khi người dùng proxy kết nối và người dùng proxy có đặc quyền

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
12 cho người dùng ủy quyền. Để biết chi tiết và ví dụ, xem Phần & NBSP; 6.2.19, Người dùng Proxy Proxy.

MySQL lưu trữ các đặc quyền proxy trong bảng hệ thống

FLUSH PRIVILEGES;
76.

Cấp vai trò

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 Cú pháp không có mệnh đề
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
6 cấp vai trò thay vì các đặc quyền riêng lẻ. Một vai trò là một tập hợp các đặc quyền được đặt tên; Xem Phần & NBSP; 6.2.10, Sử dụng Vai trò. Ví dụ:

FLUSH PRIVILEGES;
2

Mỗi vai trò được cấp phải tồn tại, cũng như mỗi tài khoản người dùng hoặc vai trò được cấp. Kể từ MySQL 8.0.16, vai trò không thể được cấp cho người dùng ẩn danh.

Cấp một vai trò không tự động khiến vai trò hoạt động. Để biết thông tin về kích hoạt vai trò và bất hoạt, xem vai trò kích hoạt.

Những đặc quyền này được yêu cầu để cấp vai trò:

  • Nếu bạn có đặc quyền

    FLUSH PRIVILEGES;
    
    79 (hoặc đặc quyền
    REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
    
    7 không dùng nữa), bạn có thể cấp hoặc thu hồi bất kỳ vai trò nào cho người dùng hoặc vai trò.

  • Nếu bạn được cấp vai trò với tuyên bố

    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    0 bao gồm mệnh đề
    FLUSH PRIVILEGES;
    
    82, bạn sẽ có thể cấp vai trò đó cho người dùng hoặc vai trò khác hoặc thu hồi nó từ những người dùng hoặc vai trò khác, miễn là vai trò này hoạt động tại thời điểm bạn sau đó cấp hoặc thu hồi nó. Điều này bao gồm khả năng sử dụng
    FLUSH PRIVILEGES;
    
    82.

  • Để cấp một vai trò có đặc quyền

    FLUSH PRIVILEGES;
    
    84, bạn phải có đặc quyền
    FLUSH PRIVILEGES;
    
    84.

Có thể tạo các tài liệu tham khảo tròn với

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0. Ví dụ:

FLUSH PRIVILEGES;
3

Tài liệu tham khảo tài trợ thông tư được cho phép nhưng không thêm đặc quyền hoặc vai trò mới vào người được cấp vì người dùng hoặc vai trò đã có các đặc quyền và vai trò của nó.

Điều khoản
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
2 và các hạn chế đặc quyền

Kể từ MySQL 8.0.16,

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 có mệnh đề AS
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0 [với vai trò] chỉ định thông tin bổ sung về bối cảnh đặc quyền để sử dụng để thực thi câu lệnh. Cú pháp này có thể nhìn thấy ở cấp độ SQL, mặc dù mục đích chính của nó là cho phép sao chép thống nhất trên tất cả các nút của các hạn chế đặc quyền của nhà tài trợ được áp đặt bởi các thu hồi một phần, bằng cách khiến các hạn chế đó xuất hiện trong nhật ký nhị phân. Để biết thông tin về việc thu hồi một phần, xem Phần & NBSP; 6.2.12, Hạn chế đặc quyền sử dụng Revokes một phần.AS
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0 [WITH ROLE]
clause that specifies additional information about the privilege context to use for statement execution. This syntax is visible at the SQL level, although its primary purpose is to enable uniform replication across all nodes of grantor privilege restrictions imposed by partial revokes, by causing those restrictions to appear in the binary log. For information about partial revokes, see Section 6.2.12, “Privilege Restriction Using Partial Revokes”.

Khi mệnh đề AS

GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0 được chỉ định, việc thực thi câu lệnh sẽ tính đến mọi hạn chế đặc quyền liên quan đến người dùng được đặt tên, bao gồm tất cả các vai trò được chỉ định bởi
FLUSH PRIVILEGES;
91, nếu có. Kết quả là các đặc quyền thực sự được cấp bởi tuyên bố có thể được giảm so với các đặc quyền được chỉ định.AS
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0
clause is specified, statement execution takes into account any privilege restrictions associated with the named user, including all roles specified by
FLUSH PRIVILEGES;
91, if present. The result is that the privileges actually granted by the statement may be reduced relative to those specified.

Những điều kiện này áp dụng cho mệnh đề AS

GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0:AS
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0
clause:

  • GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2 chỉ có hiệu ứng khi
    GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
    GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
    GRANT SELECT ON world.* TO 'role3';
    0 có tên có các hạn chế đặc quyền (ngụ ý rằng biến hệ thống
    GRANT
        priv_type [(column_list)]
          [, priv_type [(column_list)]] ...
        ON [object_type] priv_level
        TO user_or_role [, user_or_role] ...
        [WITH GRANT OPTION]
        [AS user
            [WITH ROLE
                DEFAULT
              | NONE
              | ALL
              | ALL EXCEPT role [, role ] ...
              | role [, role ] ...
            ]
        ]
    }
    
    GRANT PROXY ON user_or_role
        TO user_or_role [, user_or_role] ...
        [WITH GRANT OPTION]
    
    GRANT role [, role] ...
        TO user_or_role [, user_or_role] ...
        [WITH ADMIN OPTION]
    
    object_type: {
        TABLE
      | FUNCTION
      | PROCEDURE
    }
    
    priv_level: {
        *
      | *.*
      | db_name.*
      | db_name.tbl_name
      | tbl_name
      | db_name.routine_name
    }
    
    user_or_role: {
        user (see Section 6.2.4, “Specifying Account Names”)
      | role (see Section 6.2.5, “Specifying Role Names”)
    }
    4 được bật).

  • Nếu

    FLUSH PRIVILEGES;
    
    91 được đưa ra, tất cả các vai trò được đặt tên phải được cấp cho
    GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
    GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
    GRANT SELECT ON world.* TO 'role3';
    0 có tên.

  • GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
    GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
    GRANT SELECT ON world.* TO 'role3';
    0 được đặt tên phải là tài khoản MySQL được chỉ định là '________ 64'@'________ 65',
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    01 hoặc
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    02. Người dùng hiện tại có thể được đặt tên cùng với
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    03 cho trường hợp người dùng thực thi muốn
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    0 thực thi với một bộ vai trò được áp dụng có thể khác với vai trò hoạt động trong phiên hiện tại.'
    quit
    
    4'@'
    quit
    
    5'
    ,
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    01, or
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    02. The current user may be named together with
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    03 for the case that the executing user wants
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    0 to execute with a set of roles applied that may differ from the roles active within the current session.

  • GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2 không thể được sử dụng để có được các đặc quyền không được người dùng thực thi tuyên bố
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    0. Người dùng thực thi phải có ít nhất các đặc quyền được cấp, nhưng mệnh đề
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2 chỉ có thể hạn chế các đặc quyền được cấp, không leo thang chúng.

  • Đối với các đặc quyền được cấp,

    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2 không thể chỉ định kết hợp người dùng/vai trò có nhiều đặc quyền hơn (ít hạn chế hơn) so với người dùng thực thi câu lệnh
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    0. Sự kết hợp người dùng/vai trò ____32 được phép có nhiều đặc quyền hơn người dùng thực thi, nhưng chỉ khi câu lệnh không cấp các đặc quyền bổ sung đó.

  • GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2 chỉ được hỗ trợ để cấp các đặc quyền toàn cầu (
    FLUSH PRIVILEGES;
    
    04).

  • GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2 không được hỗ trợ cho các khoản tài trợ
    GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
    
    12.

Ví dụ sau đây minh họa hiệu ứng của mệnh đề

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
2. Tạo người dùng
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
16 có một số đặc quyền toàn cầu, cũng như các hạn chế đối với các đặc quyền đó:

FLUSH PRIVILEGES;
4

Đồng thời tạo vai trò

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
17 nâng một số hạn chế đặc quyền và cấp vai trò cho
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
16:

FLUSH PRIVILEGES;
5

Bây giờ, sử dụng một tài khoản không có hạn chế đặc quyền của riêng mình, cấp cho nhiều người dùng cùng một bộ đặc quyền toàn cầu, nhưng mỗi người có các hạn chế khác nhau được áp đặt bởi mệnh đề

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
2 và kiểm tra các đặc quyền nào được cấp.

  • Tuyên bố

    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    0 ở đây không có mệnh đề
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2, vì vậy các đặc quyền được cấp chính xác là những đặc quyền được chỉ định:

    FLUSH PRIVILEGES;
    
    6
  • Tuyên bố

    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    0 ở đây có mệnh đề
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2, do đó, các đặc quyền được cấp là những đặc quyền được chỉ định nhưng với các hạn chế từ
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    16 được áp dụng:

    FLUSH PRIVILEGES;
    
    7

    Như đã đề cập trước đây, mệnh đề

    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2 chỉ có thể thêm các hạn chế đặc quyền; Nó không thể leo thang đặc quyền. Do đó, mặc dù
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    16 có đặc quyền
    GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
    
    28, nhưng không được bao gồm trong các đặc quyền được cấp vì tuyên bố không chỉ định cấp
    GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
    
    28.

  • Điều khoản

    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    2 cho tuyên bố
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    0 ở đây làm cho vai trò
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    17 hoạt động cho
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    16. Vai trò đó nâng một số hạn chế đối với
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    16. Do đó, các đặc quyền được cấp có một số hạn chế, nhưng không nhiều như đối với tuyên bố
    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    0 trước đó:

    FLUSH PRIVILEGES;
    
    8

Nếu một câu lệnh

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 bao gồm một mệnh đề AS
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0, các hạn chế đặc quyền đối với người dùng thực thi câu lệnh sẽ bị bỏ qua (thay vì áp dụng vì chúng sẽ không có điều khoản
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
2).AS
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
0
clause, privilege restrictions on the user who executes the statement are ignored (rather than applied as they would be in the absence of an
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
2 clause).

Các đặc điểm tài khoản khác

Điều khoản

FLUSH PRIVILEGES;
73 tùy chọn được sử dụng để cho phép người dùng cấp đặc quyền cho người dùng khác. Điều khoản
FLUSH PRIVILEGES;
74 cung cấp cho người dùng khả năng cung cấp cho người dùng khác bất kỳ đặc quyền nào mà người dùng có ở cấp đặc quyền được chỉ định.

Để cấp đặc quyền

REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1 cho tài khoản mà không thay đổi đặc quyền của mình, hãy làm điều này:

FLUSH PRIVILEGES;
9

Hãy cẩn thận với người mà bạn cho đặc quyền

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
41 vì hai người dùng có đặc quyền khác nhau có thể kết hợp các đặc quyền!

Bạn không thể cấp cho người dùng khác một đặc quyền mà chính bạn không có; Đặc quyền

REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1 cho phép bạn chỉ gán những đặc quyền mà chính bạn sở hữu.

Xin lưu ý rằng khi bạn cấp cho người dùng, đặc quyền

REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
1 ở cấp đặc quyền cụ thể, bất kỳ đặc quyền nào mà người dùng sở hữu (hoặc có thể được đưa ra trong tương lai) ở cấp độ đó cũng có thể được người dùng cấp cho người dùng khác. Giả sử rằng bạn cấp cho người dùng đặc quyền
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
37 trên cơ sở dữ liệu. Nếu bạn cấp đặc quyền
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41 trên cơ sở dữ liệu và chỉ định
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
46, người dùng đó có thể cung cấp cho người dùng khác không chỉ đặc quyền
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41 mà còn
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
37. Nếu bạn cấp đặc quyền
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
2 cho người dùng trên cơ sở dữ liệu, người dùng có thể cấp
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
37,
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
41 và
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
2.

Đối với người dùng không quản lý, bạn không nên cấp đặc quyền

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
13 trên toàn cầu hoặc cho lược đồ hệ thống
REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
3. Nếu bạn làm điều đó, người dùng có thể cố gắng lật đổ hệ thống đặc quyền bằng cách đổi tên các bảng!

Để biết thêm thông tin về các rủi ro bảo mật liên quan đến các đặc quyền cụ thể, hãy xem Phần & NBSP; 6.2.2, các đặc quyền được cung cấp bởi MySQL.

MySQL và các phiên bản SQL tiêu chuẩn của Grant

Sự khác biệt lớn nhất giữa các phiên bản MYSQL và SQL tiêu chuẩn của

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
0 là:

  • MySQL liên kết các đặc quyền với sự kết hợp của tên máy chủ và tên người dùng chứ không chỉ bằng tên người dùng.

  • SQL tiêu chuẩn không có các đặc quyền cấp cơ sở dữ liệu hoặc toàn cầu, cũng không hỗ trợ tất cả các loại đặc quyền mà MySQL hỗ trợ.

  • MySQL không hỗ trợ đặc quyền SQL

    GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
    
    56 tiêu chuẩn.

  • Các đặc quyền SQL tiêu chuẩn được cấu trúc theo cách phân cấp. Nếu bạn xóa người dùng, tất cả các đặc quyền mà người dùng đã bị hủy bỏ. Điều này cũng đúng trong MySQL nếu bạn sử dụng

    GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
    
    24. Xem Phần & NBSP; 13.7.1.5, Tuyên bố người dùng thả.

  • Trong SQL tiêu chuẩn, khi bạn thả một bảng, tất cả các đặc quyền cho bảng đều bị thu hồi.Trong SQL tiêu chuẩn, khi bạn thu hồi một đặc quyền, tất cả các đặc quyền được cấp dựa trên đặc quyền đó cũng bị thu hồi.Trong MySQL, các đặc quyền có thể được loại bỏ với các câu lệnh

    GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
    
    24 hoặc
    REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';
    
    9.

  • Trong MySQL, có thể có đặc quyền

    GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
    
    37 chỉ cho một số cột trong bảng.Trong trường hợp này, bạn vẫn có thể thực thi các câu lệnh
    GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
    
    37 trên bảng, miễn là bạn chỉ chèn các giá trị cho các cột mà bạn có đặc quyền
    GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
    
    37.Các cột bị bỏ qua được đặt thành các giá trị mặc định ngầm của chúng nếu chế độ SQL nghiêm ngặt không được bật.Trong chế độ nghiêm ngặt, câu lệnh bị từ chối nếu bất kỳ cột bị bỏ qua nào không có giá trị mặc định...