2011-07-06 45 views
6

Tôi muốn tạo hai người dùng trên cơ sở dữ liệu thử nghiệm MySQL của tôi, Một với quyền truy cập chỉ đọc vào các bảng có liên quan đến tạo báo cáo, v.v ... với quyền truy cập đọc-ghi vào cùng một bảng. Điều này là để thử nghiệm một hệ thống con thường kết nối với một người dùng chỉ đọc nhưng chuyển sang một người dùng đọc-ghi cho các tác vụ nhất định. Tôi đã tạo người dùng đọc-ghi với các đặc quyền chính xác, và bây giờ tôi cần một phiên bản chỉ đọc của cùng một người dùng.MySQL sao chép một người dùng

Tôi không muốn tạo phiên bản chỉ đọc từ đầu vì tôi phải đặt nhiều đặc quyền, điều này khá mất thời gian. Có cách nào tôi có thể tạo một người dùng mới dựa trên một người dùng hiện có và sau đó loại bỏ các INSERT/UPDATE/DELETE privilages từ người dùng mới? Một cái gì đó như CREATE USER 'user2' LIKE 'user1' hoặc tương tự? Tôi không thể tìm thấy nó trong tài liệu MySQL nếu nó có thể làm điều này.

Trả lời

4

Tôi đã tìm thấy hai tùy chọn.

Đầu tiên nếu bạn là Người dùng Windows, bạn có thể sử dụng Quản trị viên MySql. http://dev.mysql.com/doc/administrator/en/mysql-administrator-user-administration-user-accounts.html

thứ 2 bạn có thể sử dụng lệnh mysquserclone từ Mysql tiện ích: http://wb.mysql.com/utilities/man/mysqluserclone.html

Chúc may mắn.

+0

Tôi đã tải xuống Quản trị viên nhưng theo MySQL.com nó đã ngừng phát triển. Workbench có hỗ trợ chức năng đó thay thế không? – GordonM

+0

Cả hai liên kết đều đã chết. – halloei

7

Cách chèn vào bảng khác, cập nhật cột? Một cái gì đó như:

CREATE TABLE user_tmp LIKE user; 
INSERT INTO user_tmp SELECT * FROM user WHERE host ='localhost' AND USER ='root'; 
UPDATE user_tmp SET user = 'readonlyuser', Insert_priv = 'N', Update_priv = 'N', 
    Delete_priv = 'N', /* TODO: ADAPT TO YOUR SUITS */ LIMIT 1; 
INSERT INTO user select * FROM user_tmp; 
DROP TABLE user_tmp; 
+0

Cảm ơn bạn! Tôi đã tìm kiếm một cách để thêm hàng loạt vào một số người dùng localhost và điều này giúp bạn dễ dàng sao chép% người dùng bằng quyền của họ và mọi thứ. +1 –

+1

Giải pháp hay, nhưng được cảnh báo rằng bạn không được phép cập nhật các bảng này. Từ http://dev.mysql.com/doc/refman/5.7/en/grant-tables.html: «Sửa đổi trực tiếp các bảng trợ cấp bằng cách sử dụng các câu lệnh như INSERT, UPDATE hoặc DELETE không được khuyến khích và tự thực hiện rủi ro. Máy chủ được tự do bỏ qua các hàng không đúng định dạng do các sửa đổi đó. » Dù sao đi nữa, bạn cần có một FLIV PRIVILEGES sau đó: « Khi khởi động, và khi chạy khi FLUSH PRIVILEGES được thực hiện, máy chủ sẽ kiểm tra các hàng của bảng người dùng. » –

+0

Đồng thời nghĩ sao chép các bảng đặc quyền cụ thể (tables_priv, columns_priv, procs_priv, proxies_priv) –

Các vấn đề liên quan