Overview
PostegreSQL is open source database offered under the license of GPL and is supported by the community. The installation of postegresql is rather simple.
Installation
Installation is composed by 3 steps:
- Installation of the Repositories
- Installation of the Packages
- Installation of the Server
The configuration is done afterwards.
Install the Repositories
[root@postegresqlmaster ~]# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm Loaded plugins: fastestmirror Setting up Install Process pgdg-redhat96-9.6-3.noarch.rpm | 4.7 kB 00:00 Examining /var/tmp/yum-root-c0TACv/pgdg-redhat96-9.6-3.noarch.rpm: pgdg-redhat96-9.6-3.noarch Marking /var/tmp/yum-root-c0TACv/pgdg-redhat96-9.6-3.noarch.rpm to be installed base | 3.7 kB 00:00 base/primary_db | 4.7 MB 00:02 extras | 3.4 kB 00:00 extras/primary_db | 30 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 6.4 MB 00:01 Resolving Dependencies --> Running transaction check ---> Package pgdg-redhat96.noarch 0:9.6-3 will be installed --> Finished Dependency Resolution Dependencies Resolved =================================================================================================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================================================================================================== Installing: pgdg-redhat96 noarch 9.6-3 /pgdg-redhat96-9.6-3.noarch 2.7 k Transaction Summary =================================================================================================================================================================================================================== Install 1 Package(s) Total size: 2.7 k Installed size: 2.7 k Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : pgdg-redhat96-9.6-3.noarch 1/1 Verifying : pgdg-redhat96-9.6-3.noarch 1/1 Installed: pgdg-redhat96.noarch 0:9.6-3 Complete!
Install the packages
[root@postegresqlmaster ~]# yum install postgresql96 Loaded plugins: fastestmirror Setting up Install Process Determining fastest mirrors * base: mirrors.coreix.net * extras: mirrors.coreix.net * updates: mirrors.coreix.net pgdg96 | 4.1 kB 00:00 pgdg96/primary_db | 178 kB 00:00 Resolving Dependencies --> Running transaction check ---> Package postgresql96.x86_64 0:9.6.7-1PGDG.rhel6 will be installed --> Processing Dependency: postgresql96-libs(x86-64) = 9.6.7-1PGDG.rhel6 for package: postgresql96-9.6.7-1PGDG.rhel6.x86_64 --> Processing Dependency: libpq.so.5()(64bit) for package: postgresql96-9.6.7-1PGDG.rhel6.x86_64 --> Running transaction check ---> Package postgresql96-libs.x86_64 0:9.6.7-1PGDG.rhel6 will be installed --> Finished Dependency Resolution Dependencies Resolved =================================================================================================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================================================================================================== Installing: postgresql96 x86_64 9.6.7-1PGDG.rhel6 pgdg96 1.4 M Installing for dependencies: postgresql96-libs x86_64 9.6.7-1PGDG.rhel6 pgdg96 286 k Transaction Summary =================================================================================================================================================================================================================== Install 2 Package(s) Total download size: 1.6 M Installed size: 7.9 M Is this ok [y/N]: y Downloading Packages: (1/2): postgresql96-9.6.7-1PGDG.rhel6.x86_64.rpm | 1.4 MB 00:01 (2/2): postgresql96-libs-9.6.7-1PGDG.rhel6.x86_64.rpm | 286 kB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 690 kB/s | 1.6 MB 00:02 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : postgresql96-libs-9.6.7-1PGDG.rhel6.x86_64 1/2 Installing : postgresql96-9.6.7-1PGDG.rhel6.x86_64 2/2 Verifying : postgresql96-libs-9.6.7-1PGDG.rhel6.x86_64 1/2 Verifying : postgresql96-9.6.7-1PGDG.rhel6.x86_64 2/2 Installed: postgresql96.x86_64 0:9.6.7-1PGDG.rhel6 Dependency Installed: postgresql96-libs.x86_64 0:9.6.7-1PGDG.rhel6 Complete!
Install the server
[root@postegresqlmaster ~]# yum install postgresql96-server Loaded plugins: fastestmirror Setting up Install Process Loading mirror speeds from cached hostfile * base: mirrors.coreix.net * extras: mirrors.coreix.net * updates: mirrors.coreix.net Resolving Dependencies --> Running transaction check ---> Package postgresql96-server.x86_64 0:9.6.7-1PGDG.rhel6 will be installed --> Finished Dependency Resolution Dependencies Resolved =================================================================================================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================================================================================================== Installing: postgresql96-server x86_64 9.6.7-1PGDG.rhel6 pgdg96 4.8 M Transaction Summary =================================================================================================================================================================================================================== Install 1 Package(s) Total download size: 4.8 M Installed size: 18 M Is this ok [y/N]: y Downloading Packages: postgresql96-server-9.6.7-1PGDG.rhel6.x86_64.rpm | 4.8 MB 00:02 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : postgresql96-server-9.6.7-1PGDG.rhel6.x86_64 1/1 Verifying : postgresql96-server-9.6.7-1PGDG.rhel6.x86_64 1/1 Installed: postgresql96-server.x86_64 0:9.6.7-1PGDG.rhel6 Complete! [root@postegresqlmaster ~]#
Configuration
Configuration of the server is initially done as follows:
Server Configuration
For Linux 6:
Complete! [root@postegresqlmaster ~]# service postgresql-9.6 initdb Initializing database: [ OK ] [root@postegresqlmaster ~]# chkconfig postgresql-9.6 on [root@postegresqlmaster ~]# service postgresql-9.6 start Starting postgresql-9.6 service: [ OK ] [root@postegresqlmaster ~]#
You can also start the database as follows, if you don't have a service:
/usr/pgsql-10/bin/pg_ctl -D /var/lib/pgsql/10/data/ -l logfile start
For >= 7
[root@localhost yum.repos.d]# /usr/pgsql-9.6/bin/postgresql96-setup initdb Initializing database ... OK
Example for 12:
PostgreSQL 12
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum install -y postgresql12-server yum install -y postgresql12-contrib /usr/pgsql-12/bin/postgresql-12-setup initdb
Initial connection and Password management
In order to log in, you have to set the password initially as follows:
[root@postegresqlmaster ~]# sudo -u postgres psql postgres psql (9.6.7) Type "help" for help. postgres=# \password postgres Enter new password: Enter it again: postgres=# postgres=#
Allow external Connections
In order to allow, external connections, you show change the listening for PostgreSQL. By default, PostgreSQL listens only on the loopback IP (e.g. 127.0.0.1) so you better change that to '*' (all) if you want to be accessible to all IPs which are on the server or put specific IP, as follows:
[root@postgresqlmaster data]# cat postgresql.conf | grep listen listen_addresses = '192.168.0.178' # what IP address(es) to listen on
Like that, PostgreSQL will listen on port 5432 for IP: 192.168.0.178. You can also change the port (as soon as it isn't taken with the following setting:
[root@postgresqlmaster data]# cat postgresql.conf | grep port port = 6000 # (change requires restart) # supported by the operating system: # supported by the operating system: # %r = remote host and port [root@postgresqlmaster data]#
That PostgreSQL listens on certain port, doesn't mean it will allow users to the database. The user connection settings are specified in the pg_hba.conf file in the PGDATA directory (by default). In order to allow a connection you have to add an entry there, per specified syntax:
[root@postgresqlmaster data]# cat pg_hba.conf # PostgreSQL Client Authentication Configuration File # =================================================== # # Refer to the "Client Authentication" section in the PostgreSQL # documentation for a complete description of this file. A short # synopsis follows. # # This file controls: which hosts are allowed to connect, how clients # are authenticated, which PostgreSQL user names they can use, which # databases they can access. Records take one of these forms: # # local DATABASE USER METHOD [OPTIONS] # host DATABASE USER ADDRESS METHOD [OPTIONS]
Where the fields stands for:
- Source can be either: Host (for external connections) or Local (for local connections)
- The database to which you wish to connect, can be: “all” or particular database
- User which will be user or (+ = role)
- Address which the connection will be coming (omitted for local and IP for host type)
- Method of the authentication: md5(old), trust, ident, AES and others
- OPTIONS - additional options like LDAP (Pam) and so on.