2009-10-26 20 views
12

Các nhà phát triển đồng nghiệp của tôi và tôi có lược đồ phát triển riêng của mình trên cơ sở dữ liệu phát triển MySQL được chia sẻ. Nhiệm vụ của tôi yêu cầu tôi tạo ra các trình kích hoạt trong lược đồ của tôi, nhưng tôi đã không thành công cho đến nay.Không thể tạo kích hoạt MySQL với đặc quyền TRIGGER trên 5.1.32

CREATE TRIGGER myTrigger AFTER DELETE on myTable 
FOR EACH ROW BEGIN 
    -- DO STUFF 
END; 

MySQL nói: ERROR 1419 (HY000): Bạn không có đặc quyền SUPER và khai thác gỗ nhị phân được kích hoạt (bạn thể muốn sử dụng log_bin_trust_function_creators ít an toàn biến)

Tôi đã kiểm tra Hướng dẫn sử dụng MySQL (http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html):

Đặc quyền TRIGGER cho phép bạn tạo và thả trình kích hoạt. Bạn phải có đặc quyền này cho một bảng để tạo hoặc thả trình kích hoạt cho bảng đó. Đặc quyền này đã được thêm vào trong MySQL 5.1.6. (Trước MySQL 5.1.6, hoạt động kích hoạt yêu cầu đặc quyền SUPER.)

Chúng tôi đang chạy "5.1.32-enterprise-gpl-advanced-log", vì vậy đặc quyền TRIGGER phải đủ; tuy nhiên, DBA đã cấp cho tôi đặc quyền TRIGGER trên mySchema. * và tôi có thể nhìn thấy nó khi tôi HIỂN THỊ GRANTS ;, nhưng tôi vẫn nhận được lỗi này về việc cần đặc quyền "SUPER". Chúng tôi không muốn cung cấp cho tất cả các nhà phát triển SUPER.

Mọi đề xuất?

Trả lời

13

Đây là bug report for this. Một tùy chọn là chạy với tùy chọn --log-bin-trust-function-creators được bật, cho phép bạn tạo trình kích hoạt mà không có đặc quyền SUPER. This page giải thích việc chuyển tùy chọn đó thành phương tiện nào. Về cơ bản nó có liên quan đến việc liệu MySQL có nghĩ rằng các trigger của bạn là xác định (tức là an toàn cho việc sao chép) hay không. DBA của bạn có thể hoặc không thể chạy thoải mái trong chế độ đó. Nó không phải là lý tưởng, nhưng tốt hơn là đưa ra SUPER ...

CẬP NHẬT: Tài liệu ở liên kết thứ hai thực sự làm cho âm thanh như bạn có thể giải quyết vấn đề này bằng cách sử dụng sao chép dựa trên hàng hoặc thậm chí là chế độ hỗn hợp nhân rộng. Ít nhất điều đó sẽ làm cho nó an toàn để nhân rộng. Có hay không bạn vẫn sẽ được yêu cầu có SUPER, tôi không biết, nhưng nó có thể là giá trị một thử.

+1

Cảm ơn bạn đã liên kết. DBA sẽ chạy bằng cách sử dụng tùy chọn log-bin-trust-function-creator trên máy chủ dev thay vì đưa ra SUPER. –

+0

Lỗi MySQL # 52127 nói rằng bạn không thể cho phép người dùng thêm trình kích hoạt mà không cấp quyền sở hữu SUPER nếu bạn đã bật tính năng ghi nhật ký nhị phân. –

+0

Điều đáng nói đến là lỗi này thực sự rất hữu ích đôi khi nếu bạn đang sử dụng nhân rộng, vì nó có thể ngăn cản bạn vô ý tạo trình kích hoạt sẽ không hoạt động trong thiết lập sao chép. Một ví dụ về điều này sẽ là nơi bạn đang sử dụng một cái gì đó như RAND() như là một phần của kích hoạt. – coatesap

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