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

Con trỏ trong Mysql có quyền nào khác với người dùng?

Có, theo thiết kế, con trỏ có thể hoạt động khác với SELECT giống nhau truy vấn có thể hoạt động nếu nó được thực thi bởi người dùng đã gọi thủ tục.

Nếu bạn không chỉ định DEFINER khi bạn tạo một chương trình được lưu trữ (proc, chức năng, trình kích hoạt hoặc sự kiện) hoặc một dạng xem, thì đối tượng, khi được truy cập, sẽ chạy với các đặc quyền của người dùng đã xác định nó ban đầu, chứ không phải người dùng gọi nó.

Bạn có ba tùy chọn, tại đây:

  • Xác minh hoặc có thể sửa đổi các quyền của DEFINER hiện tại người dùng nếu thích hợp; hoặc,
  • Chỉ định một DEFINER khác người dùng khi xác định chương trình hoặc chế độ xem được lưu trữ ... bạn có thể thực hiện việc này miễn là bạn (người tạo đối tượng) có SUPER đặc quyền và người dùng gọi (truy cập) đối tượng sẽ tạm thời có các quyền của DEFINER đó người dùng thay thế; hoặc,
  • Thêm SQL SECURITY INVOKER theo định nghĩa của thủ tục, hàm và chế độ xem (mặc dù không phải là trình kích hoạt hoặc sự kiện), khiến đối tượng chạy với các đặc quyền của người dùng đã gọi nó, thay vì trình định nghĩa, đó là hành vi mặc định.

Để xem các quyền mà trình định nghĩa hiện có có, chẳng hạn nếu bạn thấy DEFINER =`someguy` @` localhost`:

mysql> SHOW GRANTS FOR 'someguy'@'localhost';

Bạn có thể tìm thấy trình định nghĩa hiện tại trong định nghĩa của thủ tục, với SHOW CREATE PROCEDURE procedure_name; .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cột nào để đặt đầu tiên trong chỉ mục? Cardinality cao hơn hay thấp hơn?

  2. MySQL - Sự cố nhóm bảng Pivot động

  3. Câu hỏi MySQL - Làm thế nào để xử lý nhiều kiểu người dùng - một bảng hay nhiều?

  4. Django - Thêm hàng vào cơ sở dữ liệu MySQL

  5. PHP / PDO / MySQL:chèn vào MEDIUMBLOB lưu trữ dữ liệu xấu