Проверить установлен ли postgresql linux

Which version of PostgreSQL am I running?

I’m in a corporate environment (running Debian Linux) and didn’t install it myself. I access the databases using Navicat or phpPgAdmin (if that helps). I also don’t have shell access to the server running the database.

21 Answers 21

Run this query from PostgreSQL:

@Timo, this is a query to be run through PostgreSQL. This could be done through pgAdmin, or any other mechanism for running a query. Were you trying to run it from an Ubuntu shell? (this won’t work)

You can running directly from the bash specifying the postgres db as follow: psql postgres -c ‘SELECT version();’

@Frank H. Using: sudo -u postgres psql postgres -c ‘SELECT version()’ | grep PostgreSQL should get you past «role ‘username’ does not exist».

I believe this is what you are looking for,

Thanks! This works for when shell access is available. Unfortunately in my case I don’t have that access; I’ve updated the question.

As Frank notes, this can be deceiving. psql will connect to whatever postmaster/postgres database process is running and the database engine may not be the same version as the psql command.

pg_config —version could be misleading, e.g. if you upgrade an Ubuntu server and don’t run pg_upgradecluster , pg_config will show the new version instead of the one you’re still using.

just this works for me: pg_config —version The command: psql —version not works, complains for this: dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not found

Using CLI:

Server version:

$ postgres -V # Or --version. Use "locate bin/postgres" if not found. postgres (PostgreSQL) 9.6.1 $ postgres -V | awk '' # Last column is version. 9.6.1 $ postgres -V | egrep -o '7\.9' # Major.Minor version 9.6 

If having more than one installation of PostgreSQL, or if getting the » postgres: command not found » error:

$ locate bin/postgres | xargs -i xargs -t '<>' -V # xargs is intentionally twice. /usr/pgsql-9.3/bin/postgres -V postgres (PostgreSQL) 9.3.5 /usr/pgsql-9.6/bin/postgres -V postgres (PostgreSQL) 9.6.1 

If locate doesn’t help, try find :

$ sudo find / -wholename '*/bin/postgres' 2>&- | xargs -i xargs -t '<>' -V # xargs is intentionally twice. /usr/pgsql-9.6/bin/postgres -V postgres (PostgreSQL) 9.6.1 

Although postmaster can also be used instead of postgres , using postgres is preferable because postmaster is a deprecated alias of postgres .

Client version:

$ psql -V # Or --version psql (PostgreSQL) 9.6.1 

If having more than one installation of PostgreSQL:

$ locate bin/psql | xargs -i xargs -t '<>' -V # xargs is intentionally twice. /usr/bin/psql -V psql (PostgreSQL) 9.3.5 /usr/pgsql-9.2/bin/psql -V psql (PostgreSQL) 9.2.9 /usr/pgsql-9.3/bin/psql -V psql (PostgreSQL) 9.3.5 

Using SQL:

Server version:

=> SELECT version(); version -------------------------------------------------------------------------------------------------------------- PostgreSQL 9.2.9 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4), 64-bit => SHOW server_version; server_version ---------------- 9.2.9 => SHOW server_version_num; server_version_num -------------------- 90209 

If more curious, try => SHOW all; .

Читайте также:  Astra linux аппаратная совместимость

Client version:

For what it’s worth, a shell command can be executed within psql to show the client version of the psql executable in the path. Note that the running psql can potentially be different from the one in the path.

=> \! psql -V psql (PostgreSQL) 9.2.9 

Thank you !, the SHOW server_version; is very handy in scripts to avoid having to parse in the long string of SELECT version(); .

Thanks a lot. People don’t realize that for issuing SQL commands you have to know at least one role to connect to the database. But with postgres -V you don’t have to know to connect to the database to know its version.

One line in CLI assuming superuser access: psql postgres -c «SHOW server_version» -t -A . -t removes headers, -A removes alignment whitespace.

If you’re using CLI and you’re a postgres user, then you can do this:

 version ------------------------------------------------------------------------------------------------------------------------- PostgreSQL 11.1 (Debian 11.1-3.pgdg80+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10+deb8u2) 4.9.2, 64-bit (1 row) 

The accepted answer is great, but if you need to interact programmatically with PostgreSQL version maybe it’s better to do:

SELECT current_setting('server_version_num'); -- Returns 90603 (9.6.3) -- Or using SHOW command: SHOW server_version_num; -- Returns 90603 too 

It will return server version as an integer. This is how server version is tested in PostgreSQL source, e.g.:

/* * This is a C code from pg_dump source. * It will do something if PostgreSQL remote version (server) is lower than 9.1.0 */ if (fout->remoteVersion < 90100) /* * Do something. */ 

To reviewers: if the answer is wrong but is an answer (like the comment implies), don't recommend deletion: downvote! See, for example, "You're doing it wrong: A plea for sanity in the Low Quality Posts queue" and "When an answer answers the wrong question, is it Not An Answer?". This is an answer. You may not agree with it, but it is an attempt to answer the question.

in shell psql.exe , execute

This will give him the version of the postgre client. I thin that OP is asking for the sql server version.

Using pgadmin4 it can be seen by double clicking Servers > server_name_here > Properties tab > Version:

enter image description here

Oh, my mistake. I thought you were right-clicking the server, which leads to a different "Properties" dialog. Thanks!

Читайте также:  Linux distributed file system

A simple way is to check the version by typing psql --version in terminal

Note that this will only tell you the client version, which could quite possibly be different to the server. See @simhumileco's answer for the canonical way.

use VERSION special variable

The \ commands are supplied by the psql client. That's not a SQL statement you can put into other clients. Question was about Navicat etc, which do not support this syntax.

Check out this guide here for full explaination

$psql postgres=# \g postgres=# SELECT version(); version --------------------------------------------------------------------------------------------------------------------- PostgreSQL 8.4.21 on x86_64-pc-linux-gnu, compiled by GCC gcc-4.6.real (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit (1 row) 

Hope it will help someone

The pg_config command will report the directory where the PostgreSQL programs are installed (--bindir), the location of C include files (--includedir) and object code libraries (--libdir), and the version of PostgreSQL (--version):

$ pg_config --version PostgreSQL 9.3.6 

If you are already using for tool(used DBeaver) to connect PostgreSQL, it will look like this :

See image bellow

Run this query from PostgreSQL: SELECT version();

Useful Queries to Chck PostgreSQL Database Version

bash-4.1$ psql postgres=# SELECT version(); postgres=# SHOW server_version; 

To Check PostgreSQL Client Version.

bash-4.1$ psql --version psql (PostgreSQL) 12.1 

If you have shell access to the server (the question mentions op does not have, but in case you have,) on a debian/ubuntu system

sudo apt-cache policy postgresql 

which will output the installed version,

postgresql: Installed: 9.6+184ubuntu1.1 Candidate: 9.6+184ubuntu1.1 Version table: *** 9.6+184ubuntu1.1 500 500 http://in.archive.ubuntu.com/ubuntu artful-updates/main amd64 Packages 500 http://in.archive.ubuntu.com/ubuntu artful-updates/main i386 Packages 500 http://security.ubuntu.com/ubuntu artful-security/main amd64 Packages 500 http://security.ubuntu.com/ubuntu artful-security/main i386 Packages 100 /var/lib/dpkg/status 9.6+184ubuntu1 500 500 http://in.archive.ubuntu.com/ubuntu artful/main amd64 Packages 500 http://in.archive.ubuntu.com/ubuntu artful/main i386 Packages 

where the Installed: is the installed postgres package version.

Источник

Как я могу проверить, установлен ли PostgreSQL или нет через Linux script?

Я хочу проверить script, если PostgreSQL установлен или нет в Linux и распечатать результат. Любые предложения о том, как сделать чек?

ОТВЕТЫ

Ответ 1

Если вы должны были запустить which psql , а Postgres не будет установлен, выход не будет. Вы просто получите приглашение терминала, чтобы принять другую команду:

Но если Postgres установлен, вы получите ответ с указанием пути к установке Postgres:

> which psql /opt/boxen/homebrew/bin/psql 

Глядя на man which , также появляется опция, которая может помочь вам:

-s No output, just return 0 if any of the executables are found, or 1 if none are found. 

Итак, похоже, что любой язык сценариев, который вы используете, может выполнять команду терминала, которую вы могли бы отправить which -s psql , и использовать возвращаемое значение, чтобы определить, установлен ли Postgres. Оттуда вы можете напечатать этот результат, как вам нравится.

У меня есть postgres, установленные на моей машине, поэтому я запускаю следующие

Читайте также:  Как установить active directory linux

который сообщает мне, что команда вернула 0, указав, что исполняемый файл Postgres был найден на моей машине.

Ответ 2

Если он основан на debian.

aptitude show postgresql | grep State 

Но я думаю, вы можете просто запустить его с помощью некоторого флага типа --version , который просто печатает некоторую информацию и выходы.

Обновлено, используя статус службы postgres. Попробуйте:

service postgres status if [ "$?" -gt "0" ]; then echo "Not installed". else echo "Intalled" fi 

Ответ 3

Нет простого способа сделать это. Все, что вы можете сделать, это проверить с менеджером пакетов (rpm, dpkg) или проверить некоторые вероятные местоположения для файлов, которые вы хотите. Или вы можете попытаться подключиться к вероятному порту (5432) и посмотреть, получаете ли вы ответ протокола PostgreSQL. Но ничто из этого не будет очень надежным. Вы можете просмотреть свои требования.

Ответ 4

Нет простого способа сделать это, поскольку PostgreSQL может быть установлен и настроен различными способами:

  • Установлен из исходного кода в домашнем каталоге пользователя
  • Установлен из источника в /opt или /usr/local , вручную запущен или запущен init script
  • Установлен из пакетов дистрибьюторов rpm / deb и запущен через init script
  • Установлен из сторонних пакетов rpm / deb и запущен через init script
  • Установлен из пакетов, но не установлен для запуска
  • Клиент установлен, подключается к серверу на другом компьютере.
  • Установлен и запущен, но не включен по умолчанию PATH или порт по умолчанию

Вы не можете полагаться на psql на PATH . Вы не можете полагаться на то, что в системе есть только один psql (несколько версий могут быть установлены по-разному). Вы не можете сделать это на основе порта, так как нет гарантии на порт 5432 или что не существует нескольких версий.

Запросить пользователя и спросить его.

Ответ 5

Если вы используете Debian Linux (или производную), и если у вас есть postive return с > which psql , просто введите psql -V (capital "V" ), и вы получите возврат как: psql (PostgreSQL) 9.4.8

Ответ 6

Перейдите в каталог bin postgres db, например /opt/postgresql/bin , и запустите команду ниже:

[. bin]# ./psql --version psql (PostgreSQL) 9.0.4 

Ответ 7

И если все остальное не справится с этим большим выбором ответов, вы всегда можете использовать "найти", как это. Или вам может понадобиться использовать sudo

Если вы являетесь пользователем root, просто введите $$> find / -name 'postgres'

Если вы пользователь, вам понадобится sudo priv, чтобы запустить его через все каталоги.

Я запускаю его таким образом из базы / , чтобы найти весь путь, в котором находится элемент. Это вернет в него любые файлы или каталоги с "postgres".

Вы можете сделать то же самое, что и файлы pg_hba.conf или postgresql.conf .

Ответ 8

Вы также можете проверить монтировку /opt в следующем пути /opt/PostgresPlus/9.5AS/bin/

Источник

Оцените статью
Adblock
detector