Điều gì xảy ra với tùy chọn cấp phép MySQL?

Xin chào, tôi đã sử dụng mã này để có siêu người dùng trong mysql

GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
    CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
    EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
    LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
    SUPER
        ON *.* TO mysql@'%'
    WITH GRANT OPTION;

và sau đó

FLUSH PRIVILEGES;

Để bắt đầu chỉnh sửa các đặc quyền trong MySQL, trước tiên bạn phải đăng nhập vào máy chủ của mình, sau đó kết nối với máy khách

$ mysql --user=username
2. Thông thường, bạn sẽ muốn kết nối với
$ mysql --user=username
3 hoặc bất kỳ tài khoản nào là tài khoản 'siêu người dùng' chính, ban đầu của bạn có toàn quyền truy cập trong toàn bộ quá trình cài đặt MySQL

Thông thường, người dùng

$ mysql --user=username
3 sẽ được chỉ định mật khẩu xác thực khi MySQL được cài đặt, nhưng nếu không phải như vậy, bạn nên thực hiện các bước để tăng cường bảo mật của mình bằng cách thêm mật khẩu
$ mysql --user=username
3 như được minh họa trong tài liệu chính thức

Kết nối với Công cụ dòng lệnh MySQL

Đối với ví dụ này, chúng tôi sẽ giả sử

$ mysql --user=username
3 là tài khoản MySQL chính. Để bắt đầu sử dụng MySQL Command-Line Tool (
$ mysql --user=username
1), hãy kết nối với máy chủ của bạn với tư cách là người dùng
$ mysql --user=username
3, sau đó đưa ra lệnh
$ mysql --user=username
2

$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>

Nếu thành công, bạn sẽ thấy một số đầu ra về kết nối MySQL của mình và hướng xuống dấu nhắc

$ mysql --user=username
2

Ghi chú. Trong trường hợp bạn không thể kết nối trực tiếp với máy chủ với tư cách là người dùng

$ mysql --user=username
3 trước khi kết nối với
$ mysql --user=username
2, bạn có thể chỉ định người dùng mà bạn muốn kết nối bằng cách thêm cờ
$ mysql --user=username
7

$ mysql --user=username

Cấp đặc quyền

Bây giờ bạn đang ở dấu nhắc

$ mysql --user=username
1, bạn chỉ cần đưa ra lệnh
$ mysql --user=username
9 với các tùy chọn cần thiết để áp dụng các quyền thích hợp

Các loại đặc quyền

Lệnh

$ mysql --user=username
9 có khả năng áp dụng nhiều đặc quyền khác nhau, mọi thứ từ khả năng
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
1 bảng và cơ sở dữ liệu, đọc hoặc viết
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
2 và thậm chí cả máy chủ
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
3. Có nhiều loại cờ và tùy chọn có sẵn cho lệnh, vì vậy bạn có thể muốn tự làm quen với những gì
$ mysql --user=username
9 thực sự có thể thực hiện bằng cách duyệt qua tài liệu chính thức

Đặc quyền dành riêng cho cơ sở dữ liệu

Trong hầu hết các trường hợp, bạn sẽ cấp đặc quyền cho người dùng MySQL dựa trên

mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
5 cụ thể mà tài khoản đó sẽ có quyền truy cập. Ví dụ, thông lệ phổ biến là mỗi MySQL
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
5 duy nhất trên máy chủ sẽ có một
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
7 duy nhất của riêng nó được liên kết với nó, sao cho chỉ một
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
7 duy nhất có quyền truy cập xác thực vào một
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
5 duy nhất và ngược lại

Để

FLUSH PRIVILEGES;
80 đặc quyền cho một
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
7, cho phép người dùng đó toàn quyền kiểm soát một
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
5 cụ thể, hãy sử dụng cú pháp sau

mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

Với lệnh đó, chúng tôi đã nói với MySQL để

  • $ mysql --user=username
    
    9
    FLUSH PRIVILEGES;
    
    84 của loại
    FLUSH PRIVILEGES;
    
    85 (do đó tất nhiên là mọi thứ). Ghi chú. Hầu hết các cài đặt MySQL hiện đại không yêu cầu từ khóa
    FLUSH PRIVILEGES;
    
    84 tùy chọn
  • Các đặc quyền này dành cho
    FLUSH PRIVILEGES;
    
    87 và nó áp dụng cho tất cả các bảng của cơ sở dữ liệu đó, được biểu thị bằng
    FLUSH PRIVILEGES;
    
    88 theo sau
  • Các đặc quyền này được gán cho
    FLUSH PRIVILEGES;
    
    89 khi
    FLUSH PRIVILEGES;
    
    89 đó được kết nối thông qua cục bộ, như được chỉ định bởi
    $ mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 112813
    Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
    [...]
    mysql>
    
    01. Để chỉ định bất kỳ máy chủ hợp lệ nào, hãy thay thế
    $ mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 112813
    Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
    [...]
    mysql>
    
    02 bằng
    $ mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 112813
    Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
    [...]
    mysql>
    
    03

Thay vì cung cấp tất cả các đặc quyền cho toàn bộ cơ sở dữ liệu, có lẽ bạn chỉ muốn cung cấp cho người dùng

$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
04 khả năng đọc dữ liệu (
$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
05) từ bảng
$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
06 của cơ sở dữ liệu
$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
07. Điều đó sẽ dễ dàng được thực hiện như vậy

FLUSH PRIVILEGES;
8

Tạo một siêu người dùng khác

Mặc dù không đặc biệt an toàn, nhưng trong một số trường hợp, bạn có thể muốn tạo một 'siêu người dùng' khác, có TẤT CẢ các đặc quyền trên TẤT CẢ các cơ sở dữ liệu trên máy chủ. Điều đó có thể được thực hiện tương tự như trên, nhưng bằng cách thay thế

FLUSH PRIVILEGES;
87 bằng dấu hoa thị ký tự đại diện

$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
0

Bây giờ

$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
04 có các đặc quyền giống như tài khoản
$ mysql --user=username
3 mặc định, hãy cẩn thận

Lưu thay đổi của bạn

Là bước cuối cùng sau bất kỳ cập nhật nào đối với các đặc quyền của người dùng, hãy đảm bảo lưu các thay đổi bằng cách đưa ra lệnh

$ mysql --user=username
11 từ dấu nhắc
$ mysql --user=username
2

Tùy chọn cấp trong SQL là gì?

TRỢ CẤP. VỚI TÙY CHỌN CẤP chỉ định rằng hiệu trưởng bảo mật nhận được quyền có khả năng cấp quyền đã chỉ định cho các tài khoản bảo mật khác .

Làm cách nào để sử dụng trợ cấp trong MySQL?

Để CẤP TẤT CẢ các đặc quyền cho một người dùng , cho phép người dùng đó toàn quyền kiểm soát một cơ sở dữ liệu cụ thể , hãy sử dụng cú pháp sau. mysql> CẤP TẤT CẢ CÁC ĐẶC QUYỀN TRÊN database_name. * ĐẾN 'tên người dùng'@'localhost';

Grant trong cơ sở dữ liệu là gì?

Lệnh cấp được được người dùng sử dụng để cấp đặc quyền cho các đối tượng cơ sở dữ liệu và cấp quyền cho người dùng khác . Một đặc quyền cho phép truy cập một đối tượng được đặt tên. Ví dụ: quyền truy cập bảng cơ sở dữ liệu. Người dùng có được đặc quyền có thể có được kết nối với cơ sở dữ liệu.

Làm cách nào để thu hồi tùy chọn cấp trong MySQL?

Để thu hồi tất cả các đặc quyền, hãy sử dụng cú pháp thứ hai, loại bỏ tất cả các đặc quyền chung, cơ sở dữ liệu, bảng, cột và quy trình cho người dùng hoặc vai trò được đặt tên. HỦY BỎ TẤT CẢ CÁC ĐẶC QUYỀN, CẤP TÙY CHỌN TỪ user_or_role [, user_or_role] . THU HỒI TẤT CẢ CÁC ĐẶC QUYỀN, TÙY CHỌN CẤP không thu hồi bất kỳ vai trò nào.