با استفاده از تابع SESSION_USER() نام کاربری جلسه جاری را نمایش دهید و آن را با CURRENT_USER() مقایسه کرده و مجوزهای کاربر جلسه را با SHOW GRANTS بررسی کنید.
3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:17 0.0
برای حل این سؤال در MySQL از عبارتهای SELECT و دستور SHOW GRANTS استفاده کنید؛ ابتدا SELECT SESSION_USER() و SELECT CURRENT_USER() را اجرا کنید و برای مقایسه میتوانید SELECT SESSION_USER() = CURRENT_USER() AS same_user; را اجرا کنید تا ببینید آیا برابر هستند یا خیر. برای مشاهده مجوزها از SHOW GRANTS FOR SESSION_USER(); بهره ببرید. نکته: SESSION_USER() هویت جلسهی فراخوانیکننده را نشان میدهد و CURRENT_USER() ممکن است هویتی باشد که کنترل دسترسی با آن انجام میشود؛ بررسی هر دو و مشاهده خروجی SHOW GRANTS برای مدیریت و عیبیابی دسترسی مفید است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته مفید این است که SESSION_USER() هویت جلسه را نشان میدهد و CURRENT_USER() هویتی است که MySQL برای اعمال مجوزها از آن استفاده میکند. اگر این دو مقدار برابر نباشند، ممکن است به دلیل استفاده از DEFINER در رویهها، نماها یا ترایجرها باشد. برای بررسی ساده میتوانید با SELECT SESSION_USER(), CURRENT_USER() این دو مقدار را نمایش داده و نتیجهٔ مقایسهٔ SESSION_USER() = CURRENT_USER() AS same_user را مشاهده کنید. همچنین برای دیدن مجوزهای فعلی در همان نشست از SHOW GRANTS FOR SESSION_USER() استفاده کنید تا بفهمید چه دسترسیهایی اعمال شده است. در صورت نیاز به اصلاح دسترسی، از GRANT یا REVOKE یا بازتنظیم DEFINER با دقت استفاده کنید.
گزارش