Bài viết này sẽ hướng dẫn các bạn cài đặt PostgreSQL 9.1 trên CentOS 6. Tuy nhiên cách cài đặt này cũng áp dụng được trên CentOS 5.
1. Cài đặt PostgreSQL Repository(repo):
– Tìm và tải các bản repo rpm mới nhất cho phiên bản RHEL/CentOS/Fedora mà bạn đang sử dụng [tại đây]
– Các repo rpm này có các phiên bản khác nhau dành cho 32 hoặc 64 bit. Bạn nên chọn phiên bản phù hợp. Ở đây mình chạy CentOS 6 (32bit) nên mình sẽ tải về gói này http://yum.pgrpms.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpm .
– Mình sử dụng wget để tải về:
wget http://yum.pgrpms.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpm
và kết quả như sau :
[root@db1 ~]# wget http://yum.pgrpms.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpm
–2012-03-30 19:20:35– http://yum.pgrpms.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpm
Resolving yum.pgrpms.org… 98.129.198.114
Connecting to yum.pgrpms.org|98.129.198.114|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 5164 (5.0K) [application/x-redhat-package-manager]
Saving to: “pgdg-centos91-9.1-4.noarch.rpm”100%[=====================================================================>] 5,164 17.1K/s in 0.3s
2012-03-30 19:20:36 (17.1 KB/s) – “pgdg-centos91-9.1-4.noarch.rpm” saved [5164/5164]
– Tiếp theo, bạn cài đặt repo sử dụng lệnh “rpm”:
rpm -ivh pgdg-centos91-9.1-4.noarch.rpm
– Do mặc định CentOS 6 đã đính kèm PostgreSQL 8.4 trong repo chính thức, để tránh các “xung đột” về sau chúng ta sẽ loại trừ (exclude) gói PostgreSQL 8.4 này bằng cách thêm ‘exclude=postgresql*’ vào phần “[base]” và “updates” của tập tin /etc/yum.repos.d/CentOS-Base.repo tương tự như sau:
[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*
#released updates
[updates]
name=CentOS-$releasever – Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*
2. Sử dụng Yum để cài đặt PostgreSQL 9.1
– Bây giờ, bạn có thể sử dụng yum để cài đặt PostgreSQL 9.1 :
yum install postgresql91 postgresql91-devel postgresql91-server postgresql91-libs postgresql91-contrib
3. Khởi tạo và khởi chạy PostgreSQL:
– Khởi tạo PostgreSQL:
service postgresql-9.1 initdb
– Khởi chạy PostgreSQL:
service postgresql-9.1 start
– Cấu hình để PostgreSQL tự khởi chạy lúc hệ thống khởi động:
chkconfig postgresql-9.1 on
4. Đặt mật khẩu cho tài khoản postgres:
– Để đặt mật khẩu cho tài khoản quản trị “postgres” các bạn làm tương tự như sau (ở ví dụ này mình đặt mật khẩu là “changeme”):
[root@db1 ~]# su - postgres -bash-4.1$ psql postgres postgres psql (9.1.3) Type "help" for help. postgres=# alter user postgres with password 'changeme'; ALTER ROLE postgres=#
5. Cấu hình để PostgreSQL xác thực bằng mật khẩu:
– Mặc định khi cài PostgreSQL kiểu xác thực sẽ là ident (xác thực qua ident server) cho các kết nối thông qua TCP/IP và xác thực kiểu “peer” cho các kết nối thông qua Unix socket.
– Để xác thực bằng mật khảu bảo mật, bạn phải chỉnh sửa tập tin /var/lib/pgsql/9.1/data/pg_hba.conf và thay đổi các METHOD thành “md5” tương tự như hình sau, có thể xem thêm cách cấu hình tập tin pg_hba.conf [tại đây]:
– Để các thay đổi có hiệu lực, bạn phải reload tập tin pg_hba.conf tương tự như sau :
[root@db1 ~]# su - postgres -bash-4.1$ /usr/pgsql-9.1/bin/pg_ctl reload server signaled -bash-4.1$
– Thử kiểm tra lại xem có bị hỏi mật khẩu không ?
[root@db1 ~]# psql postgres postgres Password for user postgres: psql (9.1.3) Type "help" for help. postgres=#
6. Cấu hình PostgreSQL để có thể truy cập từ xa:
– Ví dụ: Bạn đang ở một server khác, muốn truy cập vào các database của PostgreSQL để khai thác các dữ liệu của bạn. Tuy nhiên mặc định PostgreSQL chỉ cho phép truy cập từ localhost ( từ chính máy chạy PostgreSQL). Vì thế để truy cập được PostgreSQL từ các server khác các bạn phải hiệu chỉnh tập tin postgresql.conf và pg_hba.conf ở thư mục /var/lib/pgsql/9.1/data/ . Trong ví dụ này mình sẽ cho phép truy cập vào PostgreSQL từ các client nằm trong đường mạng 192.168.255.0/24.
– Chỉnh sửa tập tin postgresql.conf, thay đổi “listen_address” tương tự hình sau :
– Chỉnh sửa tập tin pg_hba.conf và thay đổi tương tự như hình sau:
– Nếu bạn muốn cho phép truy cập từ bất cứ IP nào, thì chỉ chỉnh sửa “192.168.255.0/24” thành “0.0.0.0/0” như hình sau:
– Sau đó bạn phải restart postgresql để các tùy chỉnh có hiệu lực:
service postgresql-9.1 restart
– Nếu server đang chạy PostgreSQL có firewall, bạn nhớ mở port 5432 cho PostgreSQL!
– Thử truy cập từ một máy khác xem thành công không ?
Chúc bạn thành công!
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Vietnam License.
sao minh setup xong thi start service no bi failed
Hi,
Bạn đã chạy lệnh “service postgresql-9.1 initdb” trước khi start service chưa ?
Ban thong may minh chua cai unikey nen ko go dau dc nha.
sau service postgresql-9.1 initdb
start ok
sau khi change config restart
false
hi;
Minh chuyen xuong cai 8.4 dc roi ma bi loi ket noi ko biet ban biet cach khac phuc ko
Sao minh dung php connect vao
$dbconn = pg_connect(“host=localhost port=5432 dbname=qlbv user=admin password=123456”);
No tra ra $dbconn =false ko ah
Xin chào bạn,
Bạn connect vào db với “psql” bằng những thông tin đăng nhập đó thành công không ?
hien minh xai navicat ket noi tu winxp xuong tao database va table deu ok
minh them ham pg_last_error(); ko thay no tra ve gi ca
Min xem trong page phpinfo(); thay pgsql da enable roi
Minh co config the nay:
# “local” is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# IPv4 internet connections:
host all all 0.0.0.0/0 md5
# – Connection Settings –
listen_addresses=’*’
#listen_addresses = ‘localhost’
port = 5432
va add them 2 dong trong iptables
-A -INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEP
-A -INPUT -m state –state NEW -m tcp -p tcp –dport 5432 -j ACCEP
thanks you…
Minh da truy cap duoc vao postgre thanh cong 🙂
cảm ơn bạn, đúng cái mình đang cần