CREATEUSER(1) PostgreSQL 18.6 Documentation CREATEUSER(1)

createuser - تعریف یک حساب کاربری جدید در PostgreSQL

createuser [connection-option...] [option...] [username]

دستور createuser یک کاربر (یا به‌طور دقیق‌تر، یک نقش) جدید در PostgreSQL ایجاد می‌کند. تنها ابرکاربران و کاربرانی با امتیاز CREATEROLE می‌توانند کاربران جدید بسازند، بنابراین createuser باید توسط فردی فراخوانی شود که امکان اتصال به عنوان ابرکاربر یا کاربری با امتیاز CREATEROLE را داشته باشد.

اگر می‌خواهید نقشی با امتیازهای SUPERUSER، REPLICATION یا BYPASSRLS ایجاد کنید، باید حتماً به عنوان یک ابرکاربر متصل شوید، نه فقط با امتیاز CREATEROLE. ابرکاربر بودن به معنای توانایی دور زدن تمامی بررسی‌های مجوز دسترسی در پایگاه‌داده است، بنابراین دسترسی ابرکاربر نباید به‌سادگی اعطا شود. امتیاز CREATEROLE نیز اختیارات بسیار گسترده‌ای در بر دارد.

دستور createuser یک پوسته روی دستور SQL یعنی CREATE ROLE است. بین ایجاد کاربران از طریق این ابزار و سایر روش‌های دسترسی به سرور هیچ تفاوت عملی وجود ندارد.

دستور createuser آرگومان‌های خط فرمان زیر را می‌پذیرد:

username

نام کاربر PostgreSQL ایجادشونده را مشخص می‌کند. این نام باید با تمام نقش‌های موجود در این نصب از PostgreSQL متفاوت باشد.

-a role
--with-admin=role

یک نقش موجود را مشخص می‌کند که به‌طور خودکار به عنوان عضو نقش جدید همراه با گزینه admin اضافه خواهد شد، و به آن این حق را می‌دهد که عضویت در نقش جدید را به دیگران نیز اعطا کند. با نوشتن چندباره گزینه -a می‌توان چندین نقش موجود را مشخص کرد.

-c number
--connection-limit=number

حداکثر تعداد اتصال‌ها را برای کاربر جدید تعیین می‌کند. حالت پیش‌فرض، عدم تعیین محدودیت است.

-d
--createdb

به کاربر جدید اجازه داده می‌شود که پایگاه‌های داده ایجاد کند.

-D
--no-createdb

به کاربر جدید اجازه ایجاد پایگاه‌های داده داده نخواهد شد. این حالت پیش‌فرض است.

-e
--echo

دستوراتی را که createuser تولید کرده و به سرور ارسال می‌کند، نمایش می‌دهد (echo).

-E
--encrypted

این گزینه منسوخ شده است اما هنوز جهت سازگاری با گذشته پذیرفته می‌شود.

-g role
--member-of=role
--role=role (منسوخ‌شده)

مشخص می‌کند که نقش جدید باید به‌طور خودکار به عنوان عضوی از نقش موجودِ تعیین‌شده اضافه شود. با نوشتن چندباره گزینه -g می‌توان چندین نقش موجود را مشخص کرد.

-i
--inherit

نقش جدید به‌طور خودکار امتیازهای نقش‌هایی را که عضو آن‌ها است به ارث می‌برد. این حالت پیش‌فرض است.

-I
--no-inherit

نقش جدید به‌طور خودکار امتیازهای نقش‌هایی را که عضو آن‌ها است به ارث نخواهد برد.

--interactive

در صورتی که هیچ نام کاربری در خط فرمان مشخص نشده باشد، آن را درخواست می‌کند؛ همچنین در صورت مشخص نشدن هر یک از گزینه‌های -d/-D، -r/-R یا -s/-S در خط فرمان، اعلان درخواست را نمایش می‌دهد. (این رفتار پیش‌فرض تا نسخه PostgreSQL 9.1 بود.)

-l
--login

به کاربر جدید اجازه ورود داده می‌شود (یعنی از نام کاربری می‌توان به عنوان شناسه کاربر اولیه نشست استفاده کرد). این حالت پیش‌فرض است.

-L
--no-login

به کاربر جدید اجازه ورود داده نخواهد شد. (یک نقش بدون امتیاز ورود همچنان به عنوان ابزاری برای مدیریت مجوزهای پایگاه‌داده مفید است.)

-m role
--with-member=role

یک نقش موجود را مشخص می‌کند که به‌طور خودکار به عنوان عضو نقش جدید اضافه خواهد شد. با نوشتن چندباره گزینه -m می‌توان چندین نقش موجود را مشخص کرد.

-P
--pwprompt

در صورت تعیین، createuser اعلانی برای دریافت گذرواژه کاربر جدید نمایش می‌دهد. اگر قصد استفاده از احراز هویت با گذرواژه را ندارید، نیازی به این گزینه نیست. -r
--createrole
کاربر جدید مجاز خواهد بود نقش‌های دیگر را ایجاد، ویرایش یا حذف کرده، برای آن‌ها یادداشت ثبت کند و برچسب امنیتی آن‌ها را تغییر دهد؛ به این معنی که این کاربر امتیاز CREATEROLE را خواهد داشت. برای جزئیات بیشتر دربارهٔ قابلیت‌هایی که توسط این امتیاز اعطا می‌شوند، بخش ایجاد نقش (role creation) را ببینید.

-R
--no-createrole

کاربر جدید مجاز به ایجاد نقش‌های جدید نخواهد بود. این مقدار پیش‌فرض است.

-s
--superuser

کاربر جدید یک ابرکاربر (superuser) خواهد بود.

-S
--no-superuser

کاربر جدید یک ابرکاربر نخواهد بود. این مقدار پیش‌فرض است.

-v timestamp
--valid-until=timestamp

تعیین تاریخ و زمانی که پس از آن گذرواژهٔ نقش دیگر معتبر نیست. پیش‌فرض این است که هیچ تاریخ انقضایی برای گذرواژه تنظیم نشود.

-V
--version

نسخهٔ createuser را چاپ کرده و خارج می‌شود.

--bypassrls

کاربر جدید تمامی سیاست‌های امنیت در سطح سطر (RLS) را دور خواهد زد.

--no-bypassrls

کاربر جدید سیاست‌های امنیت در سطح سطر (RLS) را دور نخواهد زد. این مقدار پیش‌فرض است.

--replication

کاربر جدید امتیاز REPLICATION را خواهد داشت که در مستندات CREATE ROLE (CREATE_ROLE(7)) به‌طور کامل‌تر شرح داده شده است.

--no-replication

کاربر جدید امتیاز REPLICATION را نخواهد داشت که در مستندات CREATE ROLE (CREATE_ROLE(7)) به‌طور کامل‌تر شرح داده شده است. این مقدار پیش‌فرض است.

-?
--help

راهنمایی دربارهٔ آرگومان‌های خط فرمان createuser را نمایش داده و خارج می‌شود.

دستور createuser همچنین آرگومان‌های خط فرمان زیر را برای پارامترهای اتصال می‌پذیرد:

-h host
--host=host

نام میزبان (host name) ماشینی که سرور روی آن در حال اجراست را مشخص می‌کند. اگر مقدار با یک ممیز (اسلش) آغاز شود، به‌عنوان مسیر پوشه برای سوکت دامنهٔ یونیکس (Unix domain socket) استفاده می‌شود.

-p port
--port=port

درگاه TCP یا پسوند فایل سوکت محلی دامنهٔ یونیکس را که سرور روی آن به اتصالات گوش می‌دهد، مشخص می‌کند.

-U username
--username=username

نام کاربری برای برقراری اتصال (نه نام کاربری که قرار است ایجاد شود).

-w
--no-password

هرگز اعلان درخواست گذرواژه نمایش داده نشود. اگر سرور نیاز به احراز هویت با گذرواژه داشته باشد و گذرواژه از روش‌های دیگری مانند یک فایل .pgpass در دسترس نباشد، تلاش برای اتصال ناموفق خواهد بود. این گزینه می‌تواند در کارهای دسته‌ای (batch jobs) و اسکریپت‌هایی که هیچ کاربری برای وارد کردن گذرواژه حضور ندارد مفید باشد.

-W
--password

برنامهٔ createuser را وادار می‌کند تا برای گذرواژه اعلان بدهد (برای اتصال به سرور، نه برای گذرواژهٔ کاربر جدید).

این گزینه هرگز ضروری نیست، چرا که اگر سرور نیازمند احراز هویت با گذرواژه باشد، createuser به‌طور خودکار اعلان گذرواژه را نمایش خواهد داد. با این حال، createuser یک تلاش اتصال را برای پی بردن به این‌که سرور گذرواژه می‌خواهد هدر خواهد داد. در برخی موارد نوشتن -W برای جلوگیری از این تلاش اتصال اضافه، ارزشش را دارد.

PGHOST
PGPORT
PGUSER

پارامترهای اتصال پیش‌فرض

PG_COLOR

مشخص می‌کند که آیا در پیام‌های عیب‌یابی از رنگ استفاده شود یا خیر. مقادیر ممکن عبارتند از always، auto و never.

این ابزار، مانند بیشتر ابزارهای دیگر PostgreSQL، همچنین از متغیرهای محیطی پشتیبانی‌شده توسط libpq استفاده می‌کند (به بخش 32.15 مراجعه کنید).

در صورت بروز مشکل، برای بررسی مسائل احتمالی و پیام‌های خطا، به CREATE ROLE (CREATE_ROLE(7)) و psql(1) مراجعه کنید. سرور پایگاه‌داده باید روی میزبان هدف در حال اجرا باشد. همچنین، تمام تنظیمات پیش‌فرض اتصال و متغیرهای محیطی مورد استفاده توسط کتابخانهٔ فرانت‌اند libpq اعمال خواهند شد.

برای ایجاد یک کاربر joe روی سرور پایگاه‌داده پیش‌فرض:

$ createuser joe

برای ایجاد کاربر joe روی سرور پایگاه‌داده پیش‌فرض با اعلان درخواست تعاملی برای برخی ویژگی‌های اضافی:

$ createuser --interactive joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

برای ایجاد همان کاربر joe با استفاده از سرور روی میزبان eden، درگاه 5000، با ویژگی‌هایی که صراحتاً تعیین شده‌اند، همراه با مشاهدهٔ دستور زیربنایی:

$ createuser -h eden -p 5000 -S -D -R -e joe
CREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;

برای ایجاد کاربر joe به‌عنوان مدیر سیستم (superuser) و تخصیص آنی یک گذرواژه:

$ createuser -P -s -e joe
Enter password for new role: xyzzy
Enter it again: xyzzy
CREATE ROLE joe PASSWORD 'SCRAM-SHA-256$4096:44560wPMLfjqiAzyPDZ/eQ==$4CA054rZlSFEq8Z3FEhToBTa2X6KnWFxFkPwIbKoDe0=:L/nbSZRCjp6RhOhKK56GoR1zibCCSePKshCJ9lnl3yw=' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN NOREPLICATION NOBYPASSRLS;

در مثال بالا، گذرواژهٔ جدید هنگام تایپ عملاً نمایش داده نمی‌شود، اما برای وضوح بیشتر، آنچه تایپ شده نشان داده شده است. همان‌طور که می‌بینید، گذرواژه پیش از ارسال به کلاینت رمزنگاری می‌شود..SH "همچنین ببینید (SEE ALSO)" dropuser(1), CREATE ROLE (CREATE_ROLE(7)), createrole_self_grant

2026 PostgreSQL 18.6