it-swarm.asia

كيف أجد دليل بيانات PostgreSQL؟

لقد نسيت كيف بدأت PostgreSQL في المرة الأخيرة (منذ عدة أشهر) ولا أتذكر مكان دليل البيانات. يبدو أن الأمر postgres يتطلب موقع دليل البيانات.

أنا على MacOsX إذا كان ذلك يساعد.

/usr/local/postgres غير موجود على جهاز Mac الخاص بي.

باستخدام الإجابات الواردة أدناه ، وجدت أنه هنا:

/usr/local/var/postgres
134
randomguy

إذا كان بإمكانك الاتصال بقاعدة البيانات باستخدام وصول المستخدم الخارق ، فعندئذٍ

SHOW data_directory;

أقصر الطرق.

إذا لم يكن الخادم قيد التشغيل ونسيت مكان دليل البيانات ، فعليك حقًا تخمين نفسك. قد توفر اصطلاحات خاصة بنظام تشغيل معين أو سجل Shell.

168
Peter Eisentraut

يمكنك أيضا الاستعلام عنها

select setting from pg_settings where name = 'data_directory';
38
DrColossos

pg_config يظهر الكثير من المعلومات بما في ذلك دليل البيانات:

CONFIGURE = '--disable-debug' '--prefix=/usr/local/Cellar/postgresql/9.3.2' 
            '--datadir=/usr/local/Cellar/postgresql/9.3.2/share/postgresql' 
            '--docdir=/usr/local/Cellar/postgresql/9.3.2/share/doc/postgresql' 
            '--enable-thread-safety' '--with-bonjour' '--with-gssapi' '--with-krb5' 
            '--with-ldap' '--with-openssl' '--with-pam' '--with-libxml' '--with-libxslt'
            '--with-ossp-uuid' '--with-python' '--with-Perl' '--with-tcl' 'CC=clang' 
            'CFLAGS=-I/usr/local/Cellar/ossp-uuid/1.6.2/include' 
            'LDFLAGS=-L/usr/local/Cellar/ossp-uuid/1.6.2/lib' 'LIBS=-luuid'

قد يكون هذا شيئًا محددًا للشراب ، على الرغم من ذلك ؛ بدون الشراب لا أعرف ما يظهره.

19
Dave Newton

في Ubuntu\Debian ، جرب pg_lsclusters أمر.

على جهازي:

pg_lsclusters 
Version Cluster   Port Status Owner    Data directory             Log file
8.4     main      5432 online postgres /home/adam/db/main/data    /home/adam/db/main/log
17
Adam Matan

إذا لم تتمكن من تسجيل الدخول (على سبيل المثال ، نسيت كلمة المرور) ولكن الخدمة تعمل ، لأن MacOS X هو أحد متغيرات posix ، يمكنك دائمًا التحقق من ps لمعرفة ما إذا كان يتم تمريره كوسيطة:

في مربع لينكس مع مثيلات postgres قيد التشغيل:

-bash-3.2$ ps ax | grep postgres | grep -v postgres:
 4698 ?        S      9:59 /opt/PostgreSQL/8.4/bin/postgres -D /opt/PostgreSQL/8.4/data
 6115 ?        S      8:16 /opt/PostgreSQL/8.4/bin/postgres -D /opt/PostgreSQL/8.4/data_sums
30694 pts/9    S+     0:00 grep postgres
9
Joe

تحتوي الإصدارات الحديثة من عميل PostgreSQL لسطح المكتب لنظام التشغيل OSX على مربع حوار "إعدادات الخادم" ملائم يسمح لك ليس فقط بإدراج دليل البيانات ولكن بفتحه مباشرةً.

مفيد جدًا إذا واجهت تعطلًا عشوائيًا في الجهاز يترك وراءه ملف قفل.

enter image description here

4
Matthew Mark Miller

افتح postgresql.conf وانتقل إلى السطر:

data_directory='/var/lib/postgresql/main/'

هي إجابتك.

4
Ronaldinho

التعميم من أهم 2 إجابة:

لإظهار دليل البيانات مباشرة في سطر الأوامر:

psql -U postgres -tA -c "SHOW data_directory;"

لمشاهدة جميع المسارات المحددة الأخرى للملفات والأدلة:

psql -U postgres -c "SELECT name, setting FROM pg_settings WHERE setting LIKE '/%';"

إخراج العينة:

          name           |                 setting                  
-------------------------+------------------------------------------
 config_file             | /etc/postgresql/9.6/main/postgresql.conf
 data_directory          | /mnt/pg_ssd_500/9.6/main
 external_pid_file       | /var/run/postgresql/9.6-main.pid
 hba_file                | /etc/postgresql/9.6/main/pg_hba.conf
 ident_file              | /etc/postgresql/9.6/main/pg_ident.conf
 ssl_cert_file           | /etc/ssl/pg_server.cer
 ssl_key_file            | /etc/ssl/private/pg_server.key
 stats_temp_directory    | /var/run/postgresql/9.6-main.pg_stat_tmp
 unix_socket_directories | /var/run/postgresql
(9 rows)

(في نظام التشغيل Windows ، استبدل LIKE '/%' مع LIKE '%/%' لأن المسار يبدأ بحرف محرك أقراص)

1
mivk

في Windows Server 2012 ، الأمر pg_config لم تكشف دليل البيانات لسبب مجنون. ولكني وجدته بالنظر إلى الملف C:\Program Files\PostgreSQL\9.4\pg_env.bat ، التي احتوت على هذا السطر:

@SET PGDATA=E:\POSTGRESQL

كان هذا هو الجواب الذي أحتاجه.

1
user3618269

على OS X 10.8 و 10.9 (وليس 10.10) مع تثبيت تطبيق الخادم ، اكتب في نافذة طرفية

Sudo serveradmin settings postgres

على OS X 10.9 Mavericks ، هذا هو الناتج الذي أحصل عليه من ذلك ، والذي يتضمن دليل البيانات.

postgres:log_connections = "on"
postgres:unix_socket_directory = "/private/var/pgsql_socket"
postgres:listen_addresses = "127.0.0.1,::1"
postgres:unix_socket_group = "_postgres"
postgres:log_statement = "ddl"
postgres:log_line_prefix = "%t "
postgres:unix_socket_permissions = "0770"
postgres:log_lock_waits = "on"
postgres:logging_collector = "on"
postgres:log_filename = "PostgreSQL.log"
postgres:dataDir = "/Library/Server/PostgreSQL/Data"
postgres:log_directory = "/Library/Logs/PostgreSQL"

لقد جربت هذا للتو في Yosemite (OS X 10.10) ولم يعد postgres مدرجًا كخدمة ضمن serveradmin (على الرغم من تثبيت postgres).

Sudo serveradmin list

لا يسرد postgres

1
Jason S

ماذا عن استخدام الأداة المساعدة القياسية pg_config مثل pg_config --bindir يمكن للمرء أيضًا الحصول على معلمات التكوين المستخدمة لتجميع PostgreSQL وتحليلها باستخدام pg_config --configure

0
Jacques

على Fedora وربما العديد من توزيعات Linux الأخرى ، يمكنك التغيير إلى مستخدم postgres وقراءة متغير البيئة PGDATA. على سبيل المثال:

Sudo su - postgres
echo ${PGDATA}
/var/lib/pgsql/12/data
0
dbdemon

استنادًا إلى إجابةMathew Mark Miller ، على macOS 10.14 باستخدام Postgres 11 ، فإنه موجود في:

~/Library/Application Support/Postgres
0
Navid

كما أشرنا ، يمكن للمرء أيضًا استخدام ps لالتقاط موقع البيانات مثل:

ps -e |egrep postgres|egrep -E '[[:blank:]]+\-D'| Perl -pe 's/^.*[[:blank:]]+-D[[:blank:]]+(\S+).*?$/$1/'.

هذا سيعمل معظم الوقت. سيعود شيء مثل /usr/local/pgsql/data أو في أي مكان آخر تم تحديده في معلمات PostgreSQL عند الإطلاق.

0
Jacques