না, MySQL স্টোরড প্রসিজার তৈরির সময় DEFINER ক্লজ বাধ্যতামূলক নয়। এটি শুধু তখন লাগে যখন আপনি নির্দিষ্ট ইউজারকে ডিফাইনার হিসেবে назначит করতে চান।
বিদ্যমান ইউজার দেখুন
mysql> select user, host from mysql.user;
আউটপুট
+------------------+-----------+ | user | host | +------------------+-----------+ | Manish | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | Adam Smith | localhost | | User1 | localhost | | am | localhost | +------------------+-----------+ 9 rows in set (0.03 sec)
DEFINER সহ প্রসিজার তৈরি করুন
mysql> delimiter //
mysql> CREATE DEFINER = 'Adam Smith'@'localhost' PROCEDURE Sp_Definer()
-> BEGIN
-> SELECT 'Hello MySQL';
-> END;
-> //
Query OK, 0 rows affected (0.14 sec)
mysql> delimiter ;
প্রসিজার কল করুন
CALL Sp_Definer();
আউটপুট
+-------------+ | Hello MySQL | +-------------+ | Hello MySQL | +-------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
নোট: DEFINER না দিলে ডিফল্টভাবে বর্তমান ইউজারই ডিফাইনার হয়। নিরাপত্তা ও আডিটিংয়ের জন্য নির্দিষ্ট ডিফাইনার ব্যবহার করা ভালো অভ্যাস।