| INITDB(1) | PostgreSQL 18.6 Documentation | INITDB(1) |
نام (NAME)
initdb - ایجاد یک کلاستر جدید پایگاهداده PostgreSQL
خلاصه دستور (SYNOPSIS)
initdb [گزینه...] [--pgdata | -D] دایرکتوری
توضیحات (DESCRIPTION)
دستور initdb یک کلاستر جدید پایگاهداده PostgreSQL ایجاد میکند.
ایجاد یک کلاستر پایگاهداده شامل ایجاد دایرکتوریهایی است که دادههای کلاستر در آنها قرار میگیرد، تولید جدولهای کاتالوگ مشترک (جدولهایی که به کل کلاستر تعلق دارند و نه به یک پایگاهداده خاص)، و ساخت پایگاههای داده postgres، template1 و template0 است. پایگاهداده postgres یک پایگاهداده پیشفرض است که برای استفاده کاربران، ابزارها و برنامههای ثالث در نظر گرفته شده است. پایگاههای داده template1 و template0 به عنوان پایگاههای داده منبع در نظر گرفته شدهاند تا توسط دستورات بعدی CREATE DATABASE کپی شوند. پایگاهداده template0 هرگز نباید تغییر داده شود، اما میتوانید اشیایی را به template1 اضافه کنید، که بهطور پیشفرض در پایگاههای دادهای که بعداً ایجاد میشوند کپی خواهند شد. برای جزئیات بیشتر به بخش 22.3 مراجعه کنید.
اگرچه initdb تلاش خواهد کرد تا دایرکتوری داده تعیینشده را ایجاد کند، اما اگر دایرکتوری والدِ آن متعلق به کاربر ریشه (root) باشد، ممکن است مجوز لازم را نداشته باشد. برای مقداردهی اولیه در چنین ساختاری، ابتدا یک دایرکتوری داده خالی با دسترسی ریشه ایجاد کنید، سپس از chown برای واگذاری مالکیت آن دایرکتوری به حساب کاربری پایگاهداده استفاده کنید، و در نهایت با su به کاربر پایگاهداده تغییر وضعیت داده و initdb را اجرا نمایید.
دستور initdb باید توسط کاربری اجرا شود که مالک فرآیند سرور خواهد بود، زیرا سرور باید به فایلها و دایرکتوریهایی که initdb ایجاد میکند دسترسی داشته باشد. از آنجا که سرور نمیتواند با دسترسی ریشه (root) اجرا شود، شما نیز نباید initdb را به عنوان کاربر ریشه اجرا کنید. (در واقع برنامه از انجام این کار خودداری خواهد کرد.)
به دلایل امنیتی، کلاستر جدید ایجاد شده توسط initdb بهطور پیشفرض تنها برای مالک کلاستر قابل دسترسی خواهد بود. گزینه --allow-group-access به هر کاربری در همان گروه کاربریِ مالک کلاستر اجازه میدهد فایلهای موجود در کلاستر را بخواند. این قابلیت برای گرفتن نسخه پشتیبان توسط یک کاربر غیرممتاز مفید است.
دستور initdb تنظیمات محلی (locale) و کدگذاری مجموعه نویسهها (character set encoding) پیشفرض کلاستر پایگاهداده را مقداردهی اولیه میکند. همچنین میتوان این موارد را هنگام ساخت هر پایگاهداده بهطور جداگانه تعیین کرد. دستور initdb این تنظیمات را برای پایگاههای داده الگو (template) مشخص میکند، که به عنوان پیشفرض برای تمامی پایگاههای داده دیگر عمل خواهند کرد.
بهطور پیشفرض، initdb از ارائهدهنده تنظیمات محلی libc استفاده میکند (به بخش 23.1.4 مراجعه کنید). ارائهدهنده تنظیمات محلی libc این تنظیمات را از محیط سیستم دریافت کرده و کدگذاری را بر اساس تنظیمات محلی تعیین میکند.
برای انتخاب یک تنظیم محلی متفاوت برای کلاستر، از گزینه --locale استفاده کنید. همچنین گزینههای مجزای --lc-* و --icu-locale (پایینتر را ببینید) برای تعیین مقادیر دستهبندیهای مختلف محلیسازی وجود دارند. توجه داشته باشید که تنظیمات ناسازگار برای دستهبندیهای مختلف محلیسازی میتواند نتایج نامفهومی ایجاد کند، بنابراین این گزینهها باید با احتیاط به کار گرفته شوند.
به عنوان روشی جایگزین، initdb میتواند با تعیین --locale-provider=icu از کتابخانه ICU برای ارائه خدمات تنظیمات محلی استفاده کند. سرور باید همراه با پشتیبانی از ICU ساخته شده باشد. برای انتخاب شناسه محلی خاص ICU جهت اعمال، از گزینه --icu-locale استفاده کنید. توجه داشته باشید که به دلایل پیادهسازی و برای پشتیبانی از کدهای قدیمی، initdb حتی در صورت استفاده از ارائهدهنده محلی ICU نیز تنظیمات محلی libc را انتخاب و مقداردهی خواهد کرد.
هنگامی که initdb اجرا میشود، تنظیمات محلی انتخابشده را چاپ میکند. اگر نیازمندیهای پیچیدهای دارید یا گزینههای متعددی را تعیین کردهاید، توصیه میشود بررسی کنید که آیا نتیجه با آنچه مد نظر بوده مطابقت دارد یا خیر.
جزئیات بیشتر درباره تنظیمات محلی را میتوان در بخش 23.1 یافت.
برای تغییر کدگذاری پیشفرض، از گزینه --encoding استفاده کنید. جزئیات بیشتر در بخش 23.3 در دسترس است..SH "گزینهها (OPTIONS)"
-A authmethod
--auth=authmethod
دستور initdb مدخلهای pg_hba.conf را با استفاده از روش احراز هویت تعیینشده هم برای اتصالات تکثیر (replication) و هم غیرتکثیر از پیش مقداردهی خواهد کرد.
از trust استفاده نکنید مگر اینکه به تمام کاربران محلی روی سیستم خود اعتماد داشته باشید. گزینه trust برای سهولت در نصب، پیشفرض است.
--auth-host=authmethod
--auth-local=authmethod
-D directory
--pgdata=directory
-E encoding
--encoding=encoding
به طور پیشفرض، کدگذاری پایگاهداده الگو از لوکال (locale) مشتق میشود. اگر --no-locale مشخص شده باشد (یا به طور معادل، اگر لوکال C یا POSIX باشد)، پیشفرض برای ارائهدهنده ICU برابر با UTF8 و برای ارائهدهنده libc برابر با SQL_ASCII خواهد بود.
-g
--allow-group-access
--icu-locale=locale
--icu-rules=rules
-k
--data-checksums
فعال کردن چکسامها ممکن است جریمه عملکردی اندکی به همراه داشته باشد. در صورت تنظیم، چکسامها برای تمام اشیاء، در تمام پایگاههای داده محاسبه میشوند. تمام موارد خرابی چکسام در نمای pg_stat_database گزارش خواهند شد. برای جزئیات به Section 28.2 مراجعه کنید.
--locale=locale
اگر --locale-provider برابر با builtin باشد، گزینه --locale یا --builtin-locale باید مشخص شده و روی C، C.UTF-8 یا PG_UNICODE_FAST تنظیم شود.
--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale
--no-locale
--builtin-locale=locale
--locale-provider={builtin|libc|icu}
--no-data-checksums
--pwfile=filename
-T config
--text-search-config=config
-U username
--username=username
--pwprompt
-X directory
--waldir=directory
--wal-segsize=size
تنظیم این اندازه ممکن است برای کنترل دانهبندی (granularity) ارسال یا بایگانی لاگ WAL مفید باشد. همچنین در پایگاههای داده با حجم بالایی از WAL، تعداد زیاد فایلهای WAL در هر دایرکتوری میتواند به یک معضل کارایی و مدیریتی تبدیل شود. افزایش اندازه فایل WAL تعداد فایلهای WAL را کاهش خواهد داد.
سایر گزینههای کمکاربردتر نیز در دسترس هستند:
-c name=value
--set name=value
-d
--debug
--discard-caches
-L directory
-n
--no-clean
-N
--no-sync
--no-sync-data-files
توجه داشته باشید که اگر --no-sync-data-files همراه با --sync-method=syncfs استفاده شود، برخی یا تمام فایلها و دایرکتوریهای ذکرشده همگامسازی خواهند شد زیرا syncfs کل سیستمهای فایل را پردازش میکند.
این گزینه در درجه اول برای استفاده داخلی توسط ابزارهایی در نظر گرفته شده است که جداگانه اطمینان حاصل میکنند فایلهای نادیدهگرفتهشده روی دیسک همگامسازی شدهاند.
--no-instructions
-s
--show
--sync-method=method
در Linux، میتوان بهجای آن از syncfs استفاده کرد تا از سیستمعامل خواسته شود کل سیستمهای فایلی را که شامل دایرکتوری داده، فایلهای WAL و هر tablespace هستند همگامسازی کند. برای اطلاعات بیشتر درباره هشدارهایی که باید هنگام استفاده از syncfs در نظر داشته باشید، به recovery_init_sync_method مراجعه کنید.
این گزینه در صورت استفاده از --no-sync هیچ تأثیری ندارد.
-S
--sync-only
سایر گزینهها:
-V
--version
-?
--help
PGDATA
PG_COLOR
TZ
نکات (NOTES)
initdb را میتوان از طریق pg_ctl initdb نیز فراخوانی کرد.
همچنین ببینید (SEE ALSO)
pg_ctl(1)، postgres(1)، بخش 20.1
| 2026 | PostgreSQL 18.6 |