TẠO VAI TRÒ mysql

CREATE ROLE tạo một tập hợp các đặc quyền có thể được gán cho người dùng cơ sở dữ liệu. Khi một vai trò được chỉ định cho người dùng, (những) người đó sẽ nhận được tất cả các Đặc quyền của vai trò đó. Bằng cách tạo và cấp vai trò, phương tiện bảo mật cơ sở dữ liệu tốt nhất có thể được thực hiện

Cú pháp SQL

CREATE ROLE role_name [WITH ADMIN {CURRENT_USER | CURRENT_ROLE}] 

Thông số

NameDescriptionrole_nameTên để xác định vai trò. passwordTạo một vai trò cục bộ được xác thực bằng giá trị chuỗi của mật khẩu. Chỉ cho phép các ký tự một byte trong mật khẩu ngay cả khi sử dụng bộ ký tự nhiều byte. package_nameTạo vai trò ứng dụng chỉ kích hoạt vai trò thông qua ứng dụng sử dụng gói PL/SQL của package_name. Nếu bạn bỏ qua lược đồ, Oracle sẽ giả định rằng gói nằm trong lược đồ của bạn

Việc bạn sử dụng bất kỳ thông tin hoặc tài liệu nào trên trang web này hoàn toàn do bạn chịu rủi ro. Nó được cung cấp chỉ cho mục đích giáo dục. Nó đã được thử nghiệm nội bộ, tuy nhiên, chúng tôi không đảm bảo rằng nó sẽ hiệu quả với bạn. Đảm bảo rằng bạn chạy nó trong môi trường thử nghiệm trước khi sử dụng

Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng vai trò MySQL để đơn giản hóa việc quản lý đặc quyền

Giới thiệu về vai trò MySQL

Thông thường, bạn có nhiều người dùng với cùng một nhóm đặc quyền. Trước đây, cách duy nhất để cấp và thu hồi đặc quyền cho nhiều người dùng là thay đổi đặc quyền của từng người dùng, điều này rất tốn thời gian

Để dễ dàng hơn, MySQL đã cung cấp một đối tượng mới gọi là vai trò. Một vai trò là một tập hợp các đặc quyền được đặt tên

Giống như tài khoản người dùng, bạn có thể cấp đặc quyền cho vai trò và thu hồi đặc quyền từ họ

TẠO VAI TRÒ mysql
TẠO VAI TRÒ mysql

Nếu muốn cấp cùng một nhóm quyền cho nhiều người dùng, bạn làm theo các bước sau

  • Đầu tiên, tạo một vai trò mới
  • Thứ hai, cấp đặc quyền cho vai trò
  • Thứ ba, cấp vai trò cho người dùng

Trường hợp muốn thay đổi đặc quyền của user thì chỉ cần thay đổi đặc quyền của role được cấp. Các thay đổi sẽ có hiệu lực đối với tất cả người dùng được cấp vai trò

Ví dụ vai trò MySQL

Đầu tiên, tạo một cơ sở dữ liệu mới có tên CRM, viết tắt của quản lý quan hệ khách hàng

CREATE DATABASE crm;

Code language: SQL (Structured Query Language) (sql)

Tiếp theo, sử dụng cơ sở dữ liệu

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
4

USE crm;

Code language: SQL (Structured Query Language) (sql)

Sau đó, tạo bảng

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
5 bên trong cơ sở dữ liệu

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
6

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)

Sau đó, chèn dữ liệu vào bảng

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
7

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)

Cuối cùng, xác minh phần chèn bằng cách sử dụng câu lệnh

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
8 sau đây

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
TẠO VAI TRÒ mysql
TẠO VAI TRÒ mysql

Tạo vai trò

Giả sử bạn phát triển một ứng dụng sử dụng cơ sở dữ liệu

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
6. Để tương tác với cơ sở dữ liệu

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
6, bạn cần tạo tài khoản cho những nhà phát triển cần toàn quyền truy cập vào cơ sở dữ liệu. Ngoài ra, bạn cần tạo tài khoản cho những người dùng chỉ cần quyền đọc và những người khác cần cả quyền đọc/ghi

Để tránh cấp đặc quyền cho từng tài khoản người dùng riêng lẻ, bạn tạo một nhóm vai trò và cấp các vai trò thích hợp cho từng tài khoản người dùng

Để tạo vai trò mới, bạn sử dụng câu lệnh

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
1

CREATE ROLE crm_dev, crm_read, crm_write;

Code language: SQL (Structured Query Language) (sql)

Tên vai trò tương tự như tài khoản người dùng bao gồm hai phần. tên và máy chủ

role_name@host_name

Code language: SQL (Structured Query Language) (sql)

Nếu bỏ phần host thì mặc định là ‘%’ có nghĩa là bất kỳ host nào

Cấp đặc quyền cho vai trò

Để cấp đặc quyền cho một vai trò, bạn sử dụng câu lệnh

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
2. Câu lệnh sau đây cấp tất cả các đặc quyền cho vai trò

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
3

GRANT ALL ON crm.* TO crm_dev;

Code language: SQL (Structured Query Language) (sql)

Tuyên bố sau trao đặc quyền của

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
8 cho vai trò của

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
5

GRANT SELECT ON crm.* TO crm_read;

Code language: SQL (Structured Query Language) (sql)

Tuyên bố sau đây cấp các đặc quyền của

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
6,

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
7 và

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
8 cho vai trò của

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
9

GRANT INSERT, UPDATE, DELETE ON crm.* TO crm_write;

Code language: SQL (Structured Query Language) (sql)

Gán vai trò cho tài khoản người dùng

Giả sử bạn cần một tài khoản người dùng với tư cách là nhà phát triển, một tài khoản người dùng có thể có quyền truy cập chỉ đọc và hai tài khoản người dùng có thể có quyền truy cập đọc/ghi

Để tạo người dùng mới, bạn sử dụng câu lệnh

CREATE ROLE crm_dev, crm_read, crm_write;

Code language: SQL (Structured Query Language) (sql)
0 như sau

USE crm;

Code language: SQL (Structured Query Language) (sql)
0

Để gán vai trò cho người dùng, bạn sử dụng câu lệnh

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
2

Câu lệnh sau cấp vai trò

CREATE ROLE crm_dev, crm_read, crm_write;

Code language: SQL (Structured Query Language) (sql)
2 cho tài khoản người dùng

CREATE ROLE crm_dev, crm_read, crm_write;

Code language: SQL (Structured Query Language) (sql)
3

USE crm;

Code language: SQL (Structured Query Language) (sql)
1

Câu lệnh sau cấp vai trò

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
5 cho tài khoản người dùng

CREATE ROLE crm_dev, crm_read, crm_write;

Code language: SQL (Structured Query Language) (sql)
5

USE crm;

Code language: SQL (Structured Query Language) (sql)
2

Câu lệnh sau cấp vai trò

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
5 và

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
9 cho tài khoản người dùng

CREATE ROLE crm_dev, crm_read, crm_write;

Code language: SQL (Structured Query Language) (sql)
8 và

CREATE ROLE crm_dev, crm_read, crm_write;

Code language: SQL (Structured Query Language) (sql)
9

USE crm;

Code language: SQL (Structured Query Language) (sql)
3

Để xác minh việc gán vai trò, bạn sử dụng câu lệnh

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
0 như ví dụ sau

USE crm;

Code language: SQL (Structured Query Language) (sql)
4

Câu lệnh trả về tập kết quả sau

TẠO VAI TRÒ mysql
TẠO VAI TRÒ mysql

Như bạn có thể thấy, nó vừa trả về các vai trò được cấp. Để hiển thị các đặc quyền mà các vai trò đại diện, bạn sử dụng mệnh đề

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
1 với tên của các vai trò được cấp như sau

USE crm;

Code language: SQL (Structured Query Language) (sql)
5

Câu lệnh trả về đầu ra sau

TẠO VAI TRÒ mysql
TẠO VAI TRÒ mysql

Đặt vai trò mặc định

Bây giờ nếu bạn kết nối với MySQL bằng tài khoản người dùng

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
2 và thử truy cập cơ sở dữ liệu

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
6

USE crm;

Code language: SQL (Structured Query Language) (sql)
6

Tuyên bố đưa ra thông báo lỗi sau

USE crm;

Code language: SQL (Structured Query Language) (sql)
7

Điều này là do khi bạn cấp vai trò cho tài khoản người dùng, nó không tự động kích hoạt vai trò khi tài khoản người dùng kết nối với máy chủ cơ sở dữ liệu

Nếu bạn gọi hàm

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
4, nó sẽ trả về

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
5, nghĩa là không có vai trò tích cực nào

USE crm;

Code language: SQL (Structured Query Language) (sql)
8

Đây là đầu ra

USE crm;

Code language: SQL (Structured Query Language) (sql)
9

Để chỉ định vai trò nào sẽ hoạt động mỗi khi tài khoản người dùng kết nối với máy chủ cơ sở dữ liệu, bạn sử dụng câu lệnh

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
6

Câu lệnh sau đặt mặc định cho tài khoản

CREATE ROLE crm_dev, crm_read, crm_write;

Code language: SQL (Structured Query Language) (sql)
5 tất cả các vai trò được chỉ định của nó

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
0

Bây giờ, nếu bạn kết nối với máy chủ cơ sở dữ liệu MySQL bằng tài khoản người dùng

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
2 và gọi hàm

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
4

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
1

Bạn sẽ thấy các vai trò mặc định cho tài khoản người dùng

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
2

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
2

Bạn có thể kiểm tra các đặc quyền của tài khoản

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
5 bằng cách chuyển cơ sở dữ liệu hiện tại sang

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
6, thực hiện câu lệnh

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
8 và câu lệnh

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
8 như sau

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
3

Nó hoạt động như mong đợi. Khi chúng tôi đưa ra câu lệnh

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
8, MySQL đã đưa ra lỗi vì tài khoản người dùng

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
2 chỉ có quyền đọc

Đặt vai trò tích cực

Tài khoản người dùng có thể sửa đổi các đặc quyền có hiệu lực của người dùng hiện tại trong phiên hiện tại bằng cách chỉ định vai trò được cấp nào đang hoạt động

Câu lệnh sau đặt vai trò tích cực thành

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
5, nghĩa là không có vai trò tích cực nào

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
4

Để đặt vai trò tích cực cho tất cả vai trò được cấp, bạn sử dụng

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
5

Để đặt vai trò tích cực thành vai trò mặc định được đặt bởi câu lệnh

role_name@host_name

Code language: SQL (Structured Query Language) (sql)
6, bạn sử dụng

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
6

Để đặt vai trò được đặt tên đang hoạt động, bạn sử dụng

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
7

Thu hồi đặc quyền từ vai trò

Để thu hồi đặc quyền từ một vai trò cụ thể, bạn sử dụng câu lệnh

GRANT ALL ON crm.* TO crm_dev;

Code language: SQL (Structured Query Language) (sql)
9. Tuyên bố

GRANT SELECT ON crm.* TO crm_read;

Code language: SQL (Structured Query Language) (sql)
0 có hiệu lực không chỉ vai trò mà còn bất kỳ tài khoản nào được cấp vai trò

Ví dụ: để tạm thời đặt tất cả người dùng đọc/ghi ở chế độ chỉ đọc, bạn thay đổi vai trò

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
9 như sau

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
8

Để khôi phục các đặc quyền, bạn cần cấp lại chúng như sau

CREATE TABLE customers( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL, email VARCHAR(255) );

Code language: SQL (Structured Query Language) (sql)
9

Xóa vai trò

Để xóa một hoặc nhiều vai trò, bạn sử dụng câu lệnh

GRANT SELECT ON crm.* TO crm_read;

Code language: SQL (Structured Query Language) (sql)
2 như sau

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
0

Giống như câu lệnh

GRANT SELECT ON crm.* TO crm_read;

Code language: SQL (Structured Query Language) (sql)
0, câu lệnh

GRANT SELECT ON crm.* TO crm_read;

Code language: SQL (Structured Query Language) (sql)
2 thu hồi các vai trò từ mọi tài khoản người dùng mà họ đã được cấp

Ví dụ: để xóa vai trò

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
5,

SELECT * FROM customers;

Code language: SQL (Structured Query Language) (sql)
9, bạn sử dụng câu lệnh sau

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
1

Sao chép đặc quyền từ tài khoản người dùng này sang tài khoản khác

MySQL coi tài khoản người dùng như vai trò, do đó, bạn có thể cấp tài khoản người dùng cho tài khoản người dùng khác giống như cấp vai trò cho tài khoản người dùng đó. Điều này cho phép bạn sao chép các đặc quyền từ người dùng này sang người dùng khác

Giả sử bạn cần một tài khoản nhà phát triển khác cho cơ sở dữ liệu

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
6

Đầu tiên, tạo tài khoản người dùng mới

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
2

Thứ hai, sao chép các đặc quyền từ tài khoản người dùng

GRANT SELECT ON crm.* TO crm_read;

Code language: SQL (Structured Query Language) (sql)
8 sang tài khoản người dùng

GRANT SELECT ON crm.* TO crm_read;

Code language: SQL (Structured Query Language) (sql)
9 như sau

INSERT INTO customers(first_name,last_name,phone,email) VALUES('John','Doe','(408)-987-7654','[email protected]'), ('Lily','Bush','(408)-987-7985','[email protected]');

Code language: SQL (Structured Query Language) (sql)
3

Trong hướng dẫn này, bạn đã học cách sử dụng vai trò MySQL để quản lý đặc quyền của tài khoản người dùng dễ dàng hơn

Làm cách nào để tạo một vai trò trong MySQL?

Trong đó, wishname là tên của vai trò bạn cần tạo. .
Thí dụ. Truy vấn sau tạo một vai trò có tên TestRole_ReadOnly. .
Thí dụ. Bạn có thể tạo một vai trò bằng cách chỉ định máy chủ − mysql> CREATE ROLE samplerole@localhost; . 14 giây)
Tạo nhiều vai trò. .
Mệnh đề NẾU KHÔNG TỒN TẠI

Làm cách nào để tạo bảng vai trò trong MySQL?

Câu lệnh CREATE ROLE tạo một hoặc nhiều vai trò MariaDB . Để sử dụng nó, bạn phải có đặc quyền CREATE USER toàn cầu hoặc đặc quyền INSERT cho cơ sở dữ liệu mysql. Đối với mỗi tài khoản, CREATE ROLE tạo một hàng mới trong mysql. bảng người dùng không có đặc quyền và với trường is_role tương ứng được đặt thành Y.

Làm cách nào để tạo vai trò trong SQL Server?

Trong Object Explorer, mở rộng máy chủ mà bạn muốn tạo vai trò máy chủ mới. Mở rộng thư mục Bảo mật. Nhấp chuột phải vào thư mục Vai trò máy chủ và chọn Vai trò máy chủ mới . Trong hộp thoại Vai trò máy chủ mới -server_role_name, trên trang Chung, hãy nhập tên cho vai trò máy chủ mới trong hộp Tên vai trò máy chủ.

Làm cách nào để hiển thị vai trò trong MySQL?

TỔNG CẤP HIỂN THỊ MySQL .
Đầu tiên, chỉ định tên của tài khoản người dùng hoặc vai trò mà bạn muốn hiển thị các đặc quyền đã được cấp trước đó cho tài khoản hoặc vai trò người dùng sau từ khóa FOR. .
Thứ hai, sử dụng mệnh đề USING để kiểm tra các đặc quyền liên quan đến vai trò của người dùng