PostgreSQL is a powerful, open-source object-relational database system. It runs on all major operating systems, including Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS, Solaris, Tru64), and Windows OS. In this handy tutorial, let us see how to install PostgreSQL on CentOS 6.5 server. This tutorial is same for other RPM based distros like RHEL/Scientific Linux 6.x and Fedora.
Install PostgreSQL
First, add the PostgreSQL repository depending upon your server architecture.
For 32bit:
rpm -Uvh http://yum.postgresql.org/9.3/redhat/rhel-6-i386/pgdg-centos93-9.3-1.noarch.rpm
For 64bit:
rpm -Uvh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
For other distros, head over to the following link and install the relevant repository.
Update the repository list using command:
yum update
Now, Install postgresql with the following command:
yum install postgresql93-server postgresql93-contrib
Initialize postgresql database using following command:
service postgresql-9.3 initdb
Then, start postgresql service and make it to start automatically on every reboot.
/etc/init.d/postgresql-9.3 start chkconfig postgresql-9.3 on
Next, adjust iptables to access postgresql from outbound.
vi /etc/sysconfig/iptables
Add the following line:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
Save and exit the file. Restart iptables service.
service iptables restart
Access PostgreSQL command prompt
The default database name and database user are “postgres”. Switch to postgres user to perform postgresql related operations:
su - postgres
To login to postgresql, enter the command:
psql
psql (9.3.4) Type "help" for help. postgres=#
To exit from posgresql, type \q.
Set “postgres” user password:
Login to postgresql and set postgres password with following command:
postgres=# \password postgres Enter new password: Enter it again: postgres=# \q
To install PostgreSQL Adminpack, enter the command in postgresql prompt:
postgres=# CREATE EXTENSION adminpack; CREATE EXTENSION
Create New User and Database
For example, here I create a new user called “senthil” with password “centos” and database called “mydb”.
Switch to postgres user with command:
su - postgres
Create user senthil.
$ createuser senthil
Create database:
$ createdb mydb
Set password and Grant access to the database mydb for senthil:
$ psql
psql (9.3.4) Type "help" for help. postgres=# alter user senthil with encrypted password 'centos'; ALTER ROLE postgres=# grant all privileges on database mydb to senthil; GRANT postgres=#
Delete Users and Databases
To delete the database, switch to postgres user:
su - postgres
Enter command:
$ dropdb <database-name>
To delete a user, enter the following command:
$ dropuser <user-name>
Configure PostgreSQL-MD5 Authentication
By default, Posgresql uses ident authentication, so that the local system users can be granted access to databases own by them. If you want to set MD5 authentication to require users to enter passwords.
Open up the /var/lib/pgsql/9.3/data/pg_hba.conf file:
vi /var/lib/pgsql/9.3/data/pg_hba.conf
Add or Modify the lines as shown below
[...] # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 host all all 192.168.1.0/24 md5 # IPv6 local connections: host all all ::1/128 md5 [...]
Restart postgresql service to apply the changes:
/etc/init.d/postgresql-9.3 restart
Configure PostgreSQL-Configure TCP/IP
By default, TCP/IP connection is disabled, so that the users from another computers can’t access postgresql. To allow to connect users from another computers, Edit file /var/lib/pgsql/9.3/data/postgresql.conf:
vi /var/lib/pgsql/9.3/data/postgresql.conf
Find the lines:
[...] #listen_addresses = 'localhost' [...] #port = 5432 [...]
Uncomment both lines and set the IP address of your postgresql server or set “*” to listen from all clients as shown below:
listen_addresses = '*' port = 5432
Restart postgresql service to save changes:
/etc/init.d/postgresql-9.3 restart
Manage PostgreSQL with phpPgAdmin
phpPgAdmin is a web-based administration utility written in PHP for managing PosgreSQL.
phpPgAdmin is available only in PostgreSQL RPM repository. If you didn’t add PostgreSQL repository, you should add EPEL repository.
Follow the below link to install EPEL repository on CentOS.
Update the repository using command:
yum update
Now, Install phpPgAdmin, enter the following command:
yum install phpPgAdmin httpd
phpPgAdmin is case sensitive. Use upper and lower cases as shown in the above command.
By default, you can access phppgadmin using http://localhost/phpPgAdmin from your local system only. To access remotely, do the following.
Open up the file /etc/httpd/conf.d/phpPgAdmin.conf:
vi /etc/httpd/conf.d/phpPgAdmin.conf
Find the line:
deny from all
And, change it to look like below.
allow from all
Start or Restart Apache service:
service httpd start chkconfig httpd on
Configure phpPgAdmin
open the file /etc/phpPgAdmin/config.inc.php:
vi /etc/phpPgAdmin/config.inc.php
Find the following line:
$conf['servers'][0]['host'] = '';
Change it as shown below:
$conf['servers'][0]['host'] = 'localhost';
And find the line:
$conf['extra_login_security'] = true;
Change the value to false:
$conf['extra_login_security'] = false;
Find the line:
$conf['owned_only'] = false;
Set the value as true.
$conf['owned_only'] = true;
Save and close the file. Restart postgresql service and Apache services.
/etc/init.d/postgresql-9.3 restart service httpd restart
Now open your browser and navigate to http://ip-address/phpPgAdmin. You will be pleased when you see the following screen.
Login with users that you’ve created earlier. I already have created a user called “senthil” with password “centos” before, so I log in with user “senthil”.
This is how my phpPgAdmin dashboard looked.
That’s it. Now you’ll able to perform create, delete and alter databases graphically using phpPgAdmin easily.
---------------------------------------------------------------------
How To Install PostgreSQL 9.3 And phpPgAdmin In CentOS 6.5