PostgreSQL

Welcome!

This community is for professionals and enthusiasts of our products and services.
Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

0

یکی از مفاهیم پایه‌ای در پایگاه داده Postgresql مفهوم role هست؟ نقش یا role چه کاربردی در این پایگاه داده دارد؟

اولین برخوردی که با این پایگاه داده دارید احتمالا خطاهایی از این نوع هست:


psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5433" failed: FATAL:  role "root" does not exist


در حقیقت از این مدل برای مدیریت دسترسی استفاده می‌شود. من می‌خواهم یک تعریف دقیق از این مفهوم چیست.

آواتار
رها کردن
1 پاسخ
0
بهترین پاسخ

در پایگاه داده PostgreSQL، مفهوم ROLE (نقش) برای مدیریت دسترسی‌ها و مجوزها استفاده می‌شود. نقش‌ها در PostgreSQL به‌عنوان ابزاری برای کنترل اینکه چه کسی می‌تواند به چه منابعی دسترسی داشته باشد و چه عملیاتی را انجام دهد، عمل می‌کنند. برخلاف برخی سیستم‌های دیگر که بین "کاربر" و "گروه" تمایز قائل می‌شوند، PostgreSQL از یک مفهوم واحد به نام ROLE استفاده می‌کند که می‌تواند هم به‌عنوان کاربر (User) و هم به‌عنوان گروه (Group) عمل کند.


 کاربردهای اصلی `ROLE` در PostgreSQL


  1. مدیریت دسترسی‌ها: نقش‌ها به شما اجازه می‌دهند تا مجوزهای خاصی (مانند `SELECT`، `INSERT`، `UPDATE`، `DELETE`) را به جداول، دیتابیس‌ها، یا سایر اشیاء پایگاه داده اختصاص دهید. مثلاً می‌توانید یک نقش ایجاد کنید که فقط اجازه خواندن داده‌ها را داشته باشد و نقش دیگری که اجازه تغییر داده‌ها را هم داشته باشد.
  2. وراثت (Inheritance): یک نقش می‌تواند از نقش‌های دیگر ارث‌بری کند. این یعنی اگر نقش `A` به نقش `B` دسترسی داشته باشد، هر مجوزی که به `B` داده شده به‌طور خودکار به `A` هم منتقل می‌شود (در صورتی که ویژگی `INHERIT` فعال باشد). مثال: اگر نقش `read_only` اجازه خواندن جداول را داشته باشد و نقش `user1` از `read_only` ارث ببرد، `user1` هم همان دسترسی‌ها را خواهد داشت.
  3. ایجاد کاربران و گروه‌ها: می‌توانید یک نقش را به‌عنوان یک کاربر (با قابلیت ورود به سیستم) یا یک گروه (بدون قابلیت ورود) تعریف کنید. برای کاربر: از ویژگی `LOGIN` استفاده می‌شود. برای گروه: معمولاً بدون `LOGIN` تعریف می‌شود و فقط برای مدیریت مجوزها به کار می‌رود.
  4. کنترل ویژگی‌ها (Attributes): نقش‌ها می‌توانند ویژگی‌هایی مثل `SUPERUSER`، `CREATEDB` (ایجاد دیتابیس)، `CREATEROLE` (ایجاد نقش)، یا `LOGIN` داشته باشند. مثلاً یک نقش `admin` می‌تواند `SUPERUSER` باشد و کنترل کامل سیستم را داشته باشد.
  5. انعطاف‌پذیری در مدیریت: می‌توانید نقش‌ها را به‌صورت سلسله‌مراتبی سازمان‌دهی کنید. مثلاً نقش‌های `developer`، `analyst` و `manager` را تعریف کنید و هر کدام را به نقش‌های زیرمجموعه یا بالادست متصل کنید.


 مثال عملی:

فرض کنید می‌خواهید یک نقش برای کاربرانی که فقط باید داده‌ها را بخوانند ایجاد کنید:


-- Create a read_only role, no login
CREATE ROLE read_only;

-- Allow the role to read all schema
GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only;

-- Create a new user (role with login)
CREATE ROLE ali WITH LOGIN PASSWORD '123456';

-- Grant the role read_only to ali
GRANT read_only TO ali;


حالا کاربر `ali` می‌تواند به سیستم وارد شود و فقط داده‌ها را بخواند، بدون اینکه بتواند تغییری ایجاد کند.


 دستورات مهم مرتبط با ROLE


  •  `CREATE ROLE`: برای ایجاد نقش جدید.
  •  `ALTER ROLE`: برای تغییر ویژگی‌های یک نقش (مثل رمز عبور یا مجوزها).
  •  `DROP ROLE`: برای حذف یک نقش.
  •  `GRANT`: برای اعطای مجوز یا عضویت در نقش دیگر.
  •  `REVOKE`: برای لغو مجوزها یا عضویت.


 نکته:  نقش‌ها در PostgreSQL بسیار انعطاف‌پذیر هستند و به شما اجازه می‌دهند سیستم مجوزها را به‌صورت دقیق و متناسب با نیازهای پروژه تنظیم کنید. همیشه بهتر است از اصل "حداقل دسترسی" (Least Privilege) پیروی کنید و فقط مجوزهای ضروری را به هر نقش اختصاص دهید.


آواتار
رها کردن