2009-09-10 12 views
10

mysql ver है 5.0.67अनुमतियां mysql में किसी ट्रिगर बनाने के लिए

मेरी ट्रिगर कोड है:

DELIMITER // 
CREATE TRIGGER upd_price BEFORE UPDATE ON product_price 
FOR EACH ROW BEGIN 
    INSERT INTO update_price_log (product_id, product_price_old, product_price_new) values(OLD.product_id, OLD.product_price, NEW.product_price); 
END 
// 
DELIMITER ; 

त्रुटि है: 1227

# - प्रवेश निषेध; आपको इस ऑपरेशन के लिए सुपर विशेषाधिकार की आवश्यकता है

मेरा सर्वर, सीपीएनल नहीं है! यह है: डायरेक्टएडमिन वेब कंट्रोल पैनल।

मैं सुपर विशेषाधिकार कैसे बना सकता हूं और अपना ट्रिगर कैसे बना सकता हूं?

उत्तर

11

आपके पास उपयोगकर्ता के लिए सुपर अनुमति सेट करने के लिए MySQL रूट विशेषाधिकार होना चाहिए।

GRANT SUPER 
ON '<database>'.'<tablename/*>' 
TO '<username>'@'<host/connection/ip/%>'; 
+0

आह कि मेरी समस्या यह थी में दी गई छोड़ने के लिए एक खतरनाक सौभाग्य की बात है मत भूलना। मैंने स्थानीय होस्ट उपयोगकर्ता को अनुमति दी लेकिन मेरे वर्कस्टेशन से कनेक्शन नहीं। – Mike

+0

अब मान्य नहीं है, आप अपने खाते के लिए ट्रिगर्स को बिना सुप्रीम अधिकार – Blauhirn

+0

@Blauhirn के बिना सेट कर सकते हैं? मैं साझा होस्टिंग का उपयोग कर रहा हूं और मैं ट्रिगर्स –

2

, my.cnf में निम्न पंक्ति या my.ini log_bin_trust_function_creators = 1

+0

पर आईएएसएस होस्टिंग सेवा पर ट्रिगर का उपयोग कर रहा था, आपको सुपर विशेषाधिकारों की भी आवश्यकता है –

1

एक और तरीका है चारों ओर this bug जोड़ने अगर स्वीकार्य, binary logging निष्क्रिय करने के लिए है द्वारा सुपर विशेषाधिकार के बिना ट्रिगर बनाने के लिए एक और तरीका है।

मैंने ऐसा इसलिए किया है क्योंकि मैं एक प्रतिकृति सर्वर का उपयोग नहीं कर रहा हूं, न ही मैं पुनर्प्राप्ति के लिए binlogs से बैकअप कर रहा हूं। लेकिन यह आपकी स्थिति में उचित नहीं हो सकता है।

यह करने के लिए, बस अपने /etc/mysql/my.cnf

अब गति प्रदान विशेषाधिकार में log_bin और log_bin_index लाइनों बाहर टिप्पणी सुपर बिना ठीक काम करता है।

3

मैं database.table स्तर पर सुपर privilede देने के लिए करने की कोशिश की है, लेकिन यह विफल रहता है, तो मैं

grant super on *.* to 'my_user'@'localhost'; 

किया तो मेरे ट्रिगर उत्पन्न। लेकिन रद्द करने के लिए यह

revoke super on *.* from 'my_user'@'localhost'; 

क्योंकि यह यह इंटरनेट डेटाबेस

संबंधित मुद्दे