Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào chúng ta có thể cấp đặc quyền cho người dùng MySQL?

Chúng tôi cần cấp đặc quyền cho người dùng mới mà chúng tôi đã tạo vì người dùng mới sẽ không có đặc quyền. Chúng tôi có thể sử dụng tuyên bố GRANT để cấp đặc quyền cho tài khoản người dùng. Cú pháp của nó sẽ như sau -

Cú pháp

 GRANT đặc quyền, [đặc quyền], .. TRÊN người dùng đặc quyền_levelTO [ĐƯỢC XÁC NHẬN BẰNG mật khẩu] [YÊU CẦU tsl_option] [VỚI [GRANT_OPTION | resource_option]]; 

Giải thích về cú pháp trên như sau -

Đầu tiên, chỉ định một hoặc nhiều đặc quyền sau từ khóa GRANT. Nếu chúng tôi cấp cho người dùng nhiều đặc quyền, mỗi đặc quyền sẽ được phân tách bằng dấu phẩy.

Tiếp theo, chỉ định cấp độ đặc quyền xác định cấp độ mà các đặc quyền được áp dụng. MySQL hỗ trợ các cấp độ toàn cầu (*. *), Cơ sở dữ liệu (database. *), Bảng (database.table) và cột. Nếu chúng tôi sử dụng mức đặc quyền cột, chúng tôi phải chỉ định một hoặc một danh sách cột được phân tách bằng dấu phẩy sau mỗi đặc quyền.

Sau đó, đặt người dùng mà chúng tôi muốn cấp đặc quyền. Nếu người dùng đã tồn tại, Câu lệnh GRANT sẽ sửa đổi đặc quyền của người dùng đó. Nếu không, câu lệnh GRANT sẽ tạo một người dùng mới. Điều khoản tùy chọn IDENTIFIED BY cho phép chúng tôi đặt mật khẩu mới cho người dùng.

Sau đó, chúng tôi chỉ định liệu người dùng có phải kết nối với máy chủ cơ sở dữ liệu qua kết nối an toàn như SSL, X059, v.v. hay không.

Cuối cùng, điều khoản CÓ PHẢI TÙY CHỌN tùy chọn cho phép chúng tôi cấp cho người dùng khác hoặc xóa khỏi những người dùng khác các đặc quyền mà chúng tôi có. Ngoài ra, chúng ta có thể sử dụng mệnh đề WITH để phân bổ tài nguyên của máy chủ cơ sở dữ liệu MySQL, ví dụ:để đặt số lượng kết nối hoặc câu lệnh mà người dùng có thể sử dụng mỗi giờ. Điều này rất hữu ích trong các môi trường chia sẻ như lưu trữ chia sẻ MySQL.

Ví dụ

Trong ví dụ dưới đây, chúng tôi đang tạo một người dùng và cấp đặc quyền cho nó -

 mysql> sử dụng mysqlDatabase changemysql> tạo người dùng abcd @ localhost được xác định bởi 'password123'; Truy vấn OK, 0 hàng bị ảnh hưởng (0,04 giây) 

Truy vấn bên dưới sẽ cung cấp cho chúng tôi các đặc quyền dành cho tài khoản người dùng mới abcd @ localhost.

 mysql> HIỂN THỊ LỚP CHO abcd @ localhost; + ------------------------------------- ----- + | Tài trợ cho abcd @ localhost | + ------------------------------------------ + | CẤP QUYỀN SỬ DỤNG BẬT *. * ĐẾN 'abcd' @ 'localhost' | + ---------------------------------- -------- + 1 hàng trong bộ (0,01 giây) 

Bây giờ, để cấp tất cả các đặc quyền cho tài khoản người dùng abcd @ localhost, chúng ta có thể sử dụng câu lệnh sau -

 mysql> CẤP TẤT CẢ BẬT *. * CHO 'abcd' @ 'localhost' VỚI TÙY CHỌN CẤP; Truy vấn OK, 0 hàng bị ảnh hưởng (0,05 giây) 

Ở đây, mệnh đề ON *. * Có nghĩa là tất cả các cơ sở dữ liệu và tất cả các đối tượng trong cơ sở dữ liệu. TÙY CHỌN CÓ CẤP cho phép abcd @ localhost cấp đặc quyền cho những người dùng khác.

Bây giờ, nếu chúng ta sử dụng lại câu lệnh SHOW GRANTS, chúng ta sẽ thấy rằng các đặc quyền của abcd @ localhost đã được cập nhật.

 mysql> HIỂN THỊ LỚP CHO abcd @ localhost; + ------------------------------------- -------------------------------- + | Tài trợ cho abcd @ localhost | + ------------------------------------------- -------------------------- + | CẤP TẤT CẢ CÁC QUYỀN RIÊNG TƯ TRÊN *. * CHO 'abcd' @ 'localhost' VỚI TÙY CHỌN CẤP | + ------------------------------ --------------------------------------- + 1 hàng trong bộ (0,00 giây)