postgreSQL یکی از پایگاههای داده قدرتمند ، رابطهای، متن باز می باشد. این پایگاه داده بر روی تمامی سیستمعاملها قابل نصب و استفاده می باشد. من در اینجا قصد توضیح نحوه نصب ، تنظیمات اولیه و همچنین دستورات اولیه بر روی سیستمعامل centOS نسخههای 7/6.5/6.4، i386 و x86-64 رو دارم.
در ابتدا باید مخزن مناسب سیستمعامل مون رو اضافه کنیم.
برای (centos 6.x 32bit(i386:
1
|
rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-6-i386/pgdg-centos94-9.4-1.noarch.rpm
|
برای centos 6.x 64bit:
1
|
rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm
|
برای centos 7 64bit:
1
|
rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
|
با استفاده از دستور زیر مخازن سیستمعاملتون رو به روز رسانی کنید:
1
|
yum update
|
حالا، با استفاده از دستور زیر پایگاه داده postgresql نسخه 9.4 رو نصب میکنیم:
1
|
yum install postgresql94-server postgresql94-contrib
|
با اجرای دستور زیر پایگاه داده postgresql رو مقدار دهی اولیه میکنیم:
در centos 6.x:
1
|
service postgresql-9.4 initdb
|
در centos 7:
1
|
/usr/pgsql-9.4/bin/postgresql94-setup initdb
|
برای فعال کردن شروع به صورت خودکار بعد از هر راه اندازی مجدد و شروع سرویس از دستورات زیر می توانیم استفاده بکنیم:
در centos 6.x:
1
2
|
service postgresql-9.4 start
chkconfig postgresql-9.4 on
|
در centos 7:
1
2
|
systemctl enable postgresql-9.4
systemctl start postgresql-9.4
|
برای تنظیم کردن فایروال iptables جهت دسترسی به postgresql از سایر سیستم ها به صورت زیر عمل میکنیم:
در centos 6.x:
1
2
3
4
|
nano /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
|
بعد از اینکه فایل iptables رو تغییر دادیم اون رو ذخیره می کنیم و با دستور زیر راه اندازی مجددش میکنیم:
1
|
service iptables restart
|
در centos 7:
1
2
3
|
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
|
دسترسی به PostgreSQL از طریق خط فرمان
دیتابیس و یوزر پیش فرض “postgres” می باشد. برای انجام دادن عملیاتهای مربوط به postgresql مانند دستور زیر با یوزر آن وارد میشویم:
1
|
[root@final ~]# su - postgres
|
برای ورود به postgresql، دستور زیر را وارد میکنیم:
1
|
-bash-4.1$ psql
|
با اجرای دستور بالا خروجی زیر نمایش داده میشود:
1
2
3
4
|
psql (9.4.0)
Type "help" for help.
postgres=#
|
برای خروج از محیط postgresql ، میتوانید از دستور q\ و یا تایپ کردن کلمه quit استفاده کنید.
اولین کاری که باید بعد از نصب انجام داد تنظیم پسور برای یوزر “postgres” میباشد. برای انجام این کار به صورت زیر عمل میکنیم:
1
2
3
4
|
postgres=# \password postgres
Enter new password:
Enter it again:
postgres=# \q
|
برای اینکه Adminpack رو نصب کنیم دستور زیر رو وارد می کنیم:
1
2
|
postgres=# CREATE EXTENSION adminpack;
CREATE EXTENSION
|
دستورات ایجاد یوزر و دیتابیس
برای مثال من در اینجا یوزری به نام “khvn” با پسورد “centos” و دیتابیس “mydb” رو ایجاد میکنیم:
اول به یوزر postgres وارد میشویم:
1
|
su - postgres
|
سپس با استفاده از دستورات زیر یوززر و دیتابیسمون رو میسازیم:
1
2
|
-bash-4.1$ createuser khvn
-bash-4.1$ createdb mydb
|
حالا وارد psql prompt میشویم، تا برای یوزرمون پسورد تعریف کنیم و ایجاد سطح دسترسی برای دیتابیس “mydb”به یوزر “khvn”:
1
|
-bash-4.1$ psql
|
1
2
3
4
5
6
7
8
9
|
psql (9.4.0)
Type "help" for help.
postgres=# alter user khvn with encrypted password 'centos';
ALTER ROLE
postgres=# grant all privileges on database mydb to khvn;
GRANT
postgres=#
|
پاک کردن یوزر و دیتابیس
با فرض اینکه در یوزر postgres هستیم، دستورات زیر رو انجام میدهیم:
1
2
3
|
-bash-4.1$ dropdb <database-name>
-bash-4.1$ dropuser <user-name>
|
انجام تعیین اعتبار (PostgreSQL-MD5 (PostgreSQL-MD5 Authentication:
فایل زیر رو باز میکنیم و مثل زیر به آن اضافه و یا تغییر میدهیم:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
nano /var/lib/pgsql/9.4/data/pg_hba.conf
[...]
# 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
[...]
|
برای اعمال تغییرات بالا سرویس رو مجددا راه اندازی میکنیم:
در centos 6.x:
1
|
service postgresql-9.4 restart
|
در centos 7:
1
|
systemctl restart postgresql-9.4
|
به صورت پیش فرض اتصال TCP/IP غیر فعال هستش، برای اینکه یوزرها از کامپیوترهای دیگه نتونن به postgresql دسترسی داشته باشند. برای تغییر اجازه دسترسی فایل کانفیگ رو تغییر می دهیم:
1
|
nano /var/lib/pgsql/9.4/data/postgresql.conf
|
خطوط زیر رو پیدا کنید:
1
2
3
4
5
|
[...]
#listen_addresses = 'localhost'
[...]
#port = 5432
[...]
|
از حالت کامنت دربیارید، و IP مجاز رو تنظیم کنید و یا اینکه “*” رو برای اجازه دسترسی از تمام یوزرها تنظیم کنید. مانند زیر
1
2
|
listen_addresses = '*'
port = 5432
|
برای اعمال تغییرات بالا سرویس رو مجددا راه اندازی میکنیم.
مدیریت پایگاه داده PostgreSQL با phpPgAdmin
phpPgAdmin یک برنامه تحت وب هستش که با زبان PHP نوشته شده جهت مدیریت Postgresql. این برنامه فقط در مخازن Postgresql RPM قابل دسترس میباشد. اگر مخزنش رو اضافه نکردهاید، مخزن EPEL رو اضافه بکنید.
یا با استفاده از دستور زیر نصب کنید:
1
|
yum install epel-release
|
مخازنتون رو با دستور زیر به روز رسانی کنید:
1
|
yum update
|
با دستور زیر اقدام به نصب phpPgAdmin و وب سرویس apache میکنیم:
1
|
yum install phpPgAdmin httpd
|
توجه داشته باشید که phpPgAdmin به بزرگ و کوچک بودن حروف حساس هستش ، پس به نحوه تایپ کردنتون دقت کنید.
به صورت پیش فرض بعد از نصب شما میتوانید از طریق لوکلهاست به صورت زیر به phpPgAdmin دسترسی داشته باشید:
1
|
http://localhost/phpPgAdmin
|
برای اینکه بتوانید از طریق کامپیوترهای دیگه هم دسترسی داشته باشید باید تنظیماتی رو که در زیر گذاشتم، در فایل کانفیگ آپاچی تغییر بدید:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
nano /etc/httpd/conf.d/phpPgAdmin.conf
[...]
Alias /phpPgAdmin /usr/share/phpPgAdmin
<Location /phpPgAdmin>
<IfModule mod_authz_core.c>
Require all granted
#Require host example.com
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Allow from all
# Allow from .example.com
</IfModule>
</Location>
|
توجه داشته باشید بعضی از خطوط به صورت کامنت میباشند، یعنی آنها را به خطوط بالایی خودشون تغییر بدید یا اضافه کنید.
فایل زیر رو باز کنید و تغییراتی که در زیر هست رو انجام بدید:
1
|
nano /etc/phpPgAdmin/config.inc.php
|
خطوط زیر رو پیدا کنید و تغییر دهید:
1
2
3
4
5
6
7
8
9
10
11
|
$conf['servers'][0]['host'] = '';
به
$conf['servers'][0]['host'] = 'localhost';
$conf['extra_login_security'] = true;
به
$conf['extra_login_security'] = false;
$conf['owned_only'] = false;
به
$conf['owned_only'] = true;
|
ذخیره کنید و سرویسهای postgresql و apache رو دوباره راه اندازی میکنیم:
در centos 6.x:
1
2
|
service postgresql-9.4 restart
service httpd restart
|
در cemtos 7:
1
2
|
systemctl restart postgresql-9.4
systemctl restart httpd
|
حالا می توانید از هر سیستم دیگری بهش دسترسی داشته باشید:
می توانید با یوزر و پسوردی که درست کرده اید وارد شوید.
در صورتی که SELinux شما فعال باشد ممکن است با ارور Login failed روبرو شوید، که با استفاده از دستور زیر ارور بوجود آمده مرتفع می گرد.
1
|
setsebool -P httpd_can_network_connect_db 1
|