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

Sao chép các đặc quyền của người dùng giữa các cơ sở dữ liệu trên cùng một máy chủ

Tất cả các đặc quyền đã cấp được lưu trữ trong các bảng hệ thống, ví dụ:- mysql.tables_priv, mysql.columns_priv, mysql.db ... Bạn có thể viết tập lệnh để sao chép tất cả các đặc quyền bạn cần.

Giả sử chúng ta có người dùng -

CREATE USER 'user1'@'%';
GRANT Insert ON TABLE database1.table1 TO 'user1'@'%';
GRANT Execute ON PROCEDURE database1.procedure1 TO 'user1'@'%';

Bây giờ, chúng tôi sẽ sao chép các đặc quyền này để có quyền truy cập vào cơ sở dữ liệu 'database2' -

-- Copy table's privileges
INSERT INTO mysql.tables_priv SELECT host, 'database2', user, table_name, grantor, timestamp, table_priv, column_priv FROM mysql.tables_priv
  WHERE user = 'user1' AND host = '%' AND db = 'database1';

-- Copy routine's privileges
INSERT INTO mysql.procs_priv SELECT host, 'database2', user, routine_name, routine_type, grantor, proc_priv, timestamp FROM mysql.procs_priv
  WHERE user = 'user1' AND host = '%' AND db = 'database1';

-- Do not forget to apply changes ;-)
FLUSH PRIVILEGES;

Làm tương tự cho các bảng hệ thống khác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL GROUP BY với tùy chọn

  2. Cách chọn mọi thứ trước / sau một ký tự nhất định trong MySQL - SUBSTRING_INDEX ()

  3. Tôi không thể tìm ra cách cập nhật thời gian đăng nhập cuối cùng của mình

  4. nhiều yêu cầu đối với sự cố đồng bộ hóa mysql nút thể hiện

  5. Mã hóa ký tự JDBC