کاربری با دسترسی به تنها چند رکورد، در PostgreSQL

محمد عسکری
منتشر شده در ۳ ماه پیش | خواندن در ۲ دقیقه

یکی از نیاز هایی که در یکی از پروژه ها به آن پیدا کردیم، این بود که کاربری روی Postgres داشته باشیم، که تنها به چند رکورد ، از یک جدول خاص دسترسی داشته باشد. راه حلی که پیدا کردیم برای این مشکل این بود، که با استفاده از View ها یک Viewخاص برای آن کار ایجاد کنیم، و به کاربر مورد نظرمان، دسترسی SELECT و UPDATE بر روی آن View را بدهیم. 

حال در اینجا مراحل انجام این کار را مرور میکنیم :‌

ابتدا کاربری ایجاد میکنیم : 

CREATE USER limited_user WITH PASSWORD '';

پس از ایجاد کاربر، به آن دسترسی اتصال به دیتابیس و وصل شدن به schema مورد نظرمان را می دهیم:

GRANT CONNECT ON DATABASE postgres TO limited_user;
GRANT USAGE ON SCHEMA public TO limited_user;

حال پس از ایجاد دسترسی برای اتصال و استفاده، یک Viewبا شرایط دلخواهمان می سازیم:

CREATE VIEW media_limitation_view as 
select id, key, value
FROM settings
where key in ('VIDEO_NUMBER_LIMIT',
'VIDEO_SIZE_LIMIT',
'IMAGE_NUMBER_LIMIT',
'IMAGE_SIZE_LIMIT')

پس از آن دسترسی به SELECT و اپدیت بر روی View ساخته شده را به کاربر مورد نظرمان می دهیم:

GRANT update,select on table public.media_limitation_view to limited_user

توجه داشته باشید با این کار به راحتی قادر خواهید بود هر مدل کوئری را دسترسی بدهید. به عنوان مثال

  • تنها پست هایی که در یک ماه اخیر ارسال شده اند
  • کاربرانی که تعداد پست های آنها، بیشتر از ۱۰۰ عدد است.
  • ...

با استفاده از این دستور، به راحتی کاربران استفاده کننده از دیتابیس را می توانید در سطح همان دیتابیس کاملا کنترل کنید. 


محمد عسکری

نظرات