Cách cài đặt PostgreSQL và pgAdmin trên FreeBSD 11

theanh

Administrator
Nhân viên
PostgreSQL hay viết tắt là Postgres, là một Hệ thống quản lý cơ sở dữ liệu quan hệ đối tượng (ORDBMS) mã nguồn mở. Hệ thống này được phát triển tích cực từ năm 1996 và đã phát triển thành một trong những ORDMS tốt nhất. Hệ thống này hỗ trợ tất cả các tính năng của RDBMS cùng với hỗ trợ cho các mô hình cơ sở dữ liệu hướng đối tượng. Đối tượng, lớp và kế thừa được hỗ trợ trực tiếp trong các lược đồ cơ sở dữ liệu và trong ngôn ngữ truy vấn. PostgreSQL có thể được sử dụng để lưu trữ cơ sở dữ liệu cho nhiều ứng dụng khác nhau, từ các trang web nhỏ đến các ứng dụng đám mây lớn hoặc kho dữ liệu.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt PostgreSQL và pgAdmin trên máy chủ FreeBSD 11.

Điều kiện tiên quyết
  • Máy chủ FreeBSD 11 tối thiểu. Khuyến nghị RAM 8 GB.
  • Người dùng Sudo có quyền root.

Cài đặt PostgreSQL​

Đầu tiên, hãy cập nhật thông tin kho lưu trữ của máy chủ.
Mã:
sudo pkg update
pkg là trình quản lý gói tích hợp sẵn cho FreeBSD. Tiếp theo, hãy tải xuống và cài đặt các gói máy chủ và máy khách PostgreSQL.
Mã:
sudo pkg install postgresql96-server postgresql96-client
Nhấn y để tiến hành cài đặt. pkg giờ sẽ tìm và cài đặt các gói được chỉ định cùng với các phụ thuộc bắt buộc.

Sau khi quá trình cài đặt hoàn tất, hãy bật PostgreSQL để tự động khởi động khi khởi động.
Mã:
sudo sysrc postgresql_enable=yes
Ngoài ra, để khởi động PostgreSQL khi khởi động, bạn cũng có thể thêm postgresql_enable="YES" vào cuối /etc/rc.conf bằng bất kỳ trình soạn thảo văn bản nào bạn thích.

Bây giờ hãy khởi tạo cơ sở dữ liệu bằng lệnh sau.
Mã:
sudo service postgresql initdb
initdb tạo một cụm cơ sở dữ liệu postgresql mới, là tập hợp các cơ sở dữ liệu được quản lý bởi một phiên bản máy chủ duy nhất.

Bây giờ bạn có thể khởi động máy chủ cơ sở dữ liệu PostgreSQL bằng lệnh sau.
Mã:
sudo service postgresql start
Máy chủ cơ sở dữ liệu PostgreSQL hiện đã được cài đặt.

Bật kết nối từ xa và xác thực mật khẩu​

Nếu máy chủ cơ sở dữ liệu được truy cập từ xa, bạn sẽ cần thực hiện một vài thay đổi trong cấu hình PostgreSQL. Trong hướng dẫn này, chúng ta sẽ sử dụng trình soạn thảo nano. Nếu bạn chưa cài đặt nano, bạn có thể chạy:
Mã:
sudo pkg install nano
Mở tệp cấu hình bằng trình soạn thảo nano.
Mã:
sudo nano /var/db/postgres/data96/postgresql.conf
Cuộn xuống để tìm các dòng hiển thị bên dưới. Bỏ chú thích listen_addresses và thay đổi giá trị của nó từ localhost thành *. Bạn cũng có thể thay đổi cổng mặc định từ 5432 thành bất kỳ giá trị nào khác mà bạn muốn.
Mã:
#------------------------------------------------------------------------------# KẾT NỐI VÀ XÁC THỰC#---------------------------------------------------------------------------------# - Thiết lập kết nối -listen_addresses = '*' # địa chỉ IP nào để lắng nghe; # danh sách các địa chỉ được phân tách bằng dấu phẩy; # mặc định là 'localhost'; sử dụng '*' cho tất cả # (thay đổi yêu cầu khởi động lại)#port = 5432 # (thay đổi yêu cầu khởi động lại)max_connections = 100 # (thay đổi yêu cầu khởi động lại)#superuser_reserved_connections = 3 # (thay đổi yêu cầu khởi động lại)#unix_socket_directories = '/tmp' # danh sách các thư mục được phân tách bằng dấu phẩy
Theo mặc định, PostgreSQL cho phép mọi người kết nối với shell psql mà không cần xác thực người dùng đã đăng nhập với tư cách là người dùng PostgreSQL. Khi cơ sở dữ liệu có thể truy cập công khai, bạn sẽ cần thay đổi phương thức xác thực thành phương thức an toàn hơn. Bạn có thể sử dụng phương thức xác thực md5 sử dụng mật khẩu được mã hóa để xác thực. Ngoài ra, bạn cũng có thể chỉ định các địa chỉ IP được phép xác thực.

Mở tệp pg_hba.conf bằng trình soạn thảo văn bản yêu thích của bạn.
Mã:
sudo nano /var/db/postgres/data96/pg_hba.conf
Thay đổi phương thức xác thực từ trust thành md5 cho kết nối loại host. Ngoài ra, hãy thêm địa chỉ của máy khách mà cơ sở dữ liệu sẽ được truy cập. Để cho phép tất cả máy khách sử dụng xác thực dựa trên md5, hãy sử dụng 0.0.0.0/0 làm địa chỉ.
Mã:
# TYPE DATABASE USER ADDRESS METHOD# "local" chỉ dành cho kết nối socket miền Unixlocal all all trust# IPv4 local connections:host all all 0.0.0.0/0 md5# IPv6 local connections:host all all ::1/128 md5
Để những thay đổi trên có hiệu lực, bạn sẽ cần khởi động lại máy chủ PostgreSQL.
Mã:
sudo service postgresql restart

Đổi mật khẩu và tạo người dùng​

Theo mặc định, PostgreSQL tạo một người dùng postgres và nhóm postgres để duy trì phiên bản PostgreSQL. Để đặt mật khẩu cho người dùng postgres, hãy chạy lệnh sau.
Mã:
sudo passwd postgres
Sau khi thay đổi mật khẩu, hãy đăng nhập với tư cách là người dùng postgres.
Mã:
su - postgres
Bây giờ bạn có thể vào shell PostgreSQL bằng lệnh sau.
Mã:
psql
Bạn sẽ thấy shell đã thay đổi thành shell PostgreSQL.
Mã:
psql (9.6.3)Nhập "help" để được trợ giúp.postgres=#
Bây giờ bạn có thể chạy các truy vấn SQL từ shell này. Để thoát khỏi shell PostgreSQL, hãy nhập \q hoặc \quit.

Bạn có thể tạo một vai trò mới theo cách tương tác bằng cách nhập:
Mã:
createuser --interactive
Tập lệnh sẽ yêu cầu bạn nhập tên người dùng và liệu người dùng có phải là siêu người dùng hay không.
Mã:
$ createuser --interactiveNhập tên vai trò để thêm: new_userVai trò mới có phải là siêu người dùng không? (y/n) nVai trò mới có được phép tạo cơ sở dữ liệu không? (y/n) yVai trò mới có được phép tạo thêm nhiều vai trò mới không? (y/n) y
Ngoài ra, bạn có thể chạy:
Mã:
createuser -sdrP new_user
Ý nghĩa của các tham số như sau.
  • s: Người dùng này sẽ là siêu người dùng.
  • d: Người dùng này có thể tạo cơ sở dữ liệu mới.
  • r: Người dùng này có thể tạo vai trò mới.
  • P: Gán mật khẩu cho vai trò này.
Lệnh trên cũng sẽ yêu cầu mật khẩu cho new_user.

Để tạo cơ sở dữ liệu mới, bạn có thể chạy lệnh sau.
Mã:
createdb new_db
Bây giờ hãy chuyển sang shell PostgreSQL bằng lệnh psql. Nếu không có mật khẩu cho người dùng, hãy cung cấp mật khẩu của tài khoản mới tạo:
Mã:
ALTER USER new_user WITH ENCRYPTED PASSWORD 'password';
Bây giờ hãy cấp tất cả các quyền của cơ sở dữ liệu cho người dùng mới tạo bằng cách chạy truy vấn:
Mã:
GRANT ALL PRIVILEGES ON DATABASE new_db TO new_user;
Thoát khỏi trình soạn thảo bằng cách chạy \q.

Cài đặt pgAdmin​

pgAdmin là ứng dụng nguồn mở phổ biến nhất để quản lý máy chủ cơ sở dữ liệu PostgreSQL. pgAdmin cung cấp giao diện người dùng đồ họa giàu tính năng để dễ dàng quản lý cơ sở dữ liệu. Ứng dụng được viết bằng Python và Javascript/jQuery. Nó có sẵn trong nhiều môi trường như Linux, Windows, Unix và có sẵn ở chế độ máy tính để bàn và máy chủ.

Trong hướng dẫn này, chúng ta sẽ cài đặt pgAdmin ở chế độ máy chủ trên cùng một máy chủ mà chúng ta đã cài đặt PostgreSQl.

pip là trình quản lý gói cho các gói Python. Nó được sử dụng để cài đặt và quản lý các gói Python và các phụ thuộc. Nếu bạn đã đăng nhập với tư cách là người dùng postgres, bạn sẽ cần chuyển sang người dùng thông thường với các đặc quyền sudo.
Mã:
su - sudo_user
Để cài đặt pip trên hệ thống của bạn, hãy chạy:
Mã:
sudo python -m surepip
Bạn nên sử dụng virtualenv để tạo môi trường Python bị cô lập. Virtualenv tạo một môi trường với cài đặt Python riêng của nó không hỗ trợ các thư viện có môi trường toàn cục hoặc môi trường ảo khác. Chạy lệnh sau để cài đặt Virtualenv.
Mã:
sudo pkg install py27-virtualenv
Bây giờ hãy tạo một môi trường ảo cho pgAdmin bằng cách chạy:
Mã:
virtualenv pgadmin4
Kích hoạt môi trường ảo bằng cách nhập:
Mã:
. pgadmin4/bin/activate
Bạn sẽ thấy shell đã thay đổi thành (pgadmin4) $.

Cài đặt một số phụ thuộc Python bằng cách nhập:
Mã:
sudo pip install cryptography pyopenssl ndg-httpsclient pyasn1
cryptography gói cung cấp các công cụ mã hóa, pyopenssl là mô-đun bao bọc Python cho thư viện OpenSSL. ndg-httpsclient đã sử dụng pyopenssl để cung cấp hỗ trợ HTTPS nâng cao và pyasn1 là triển khai Python của ASN.1. Các gói này là bắt buộc để pgAdmin hoạt động.

pgAdmin4 cũng yêu cầu gói SQLite. SQLite cũng là hệ thống quản lý cơ sở dữ liệu được SQL hỗ trợ. Thay vì yêu cầu một máy chủ riêng, SQLite lưu trữ dữ liệu trong các tệp phẳng trên đĩa. Cài đặt gói Python SQLite3 bằng cách nhập:
Mã:
sudo pkg install py27-sqlite3
Tải xuống gói Python wheel cho pgAdmin bằng cách nhập:
Mã:
wget --no-check-certificate https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v1.5/pip/pgadmin4-1.5-py2.py3-none-any.whl
Bạn luôn có thể kiểm tra liên kết đến phiên bản mới nhất của ứng dụng trên trang tải xuống pgAdmin.

Bây giờ hãy cài đặt gói bằng cách chạy:
Mã:
pip install pgadmin4-1.5-py2.py3-none-any.whl
Bây giờ bạn có thể chạy ứng dụng sử dụng:
Mã:
python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py
Khi chạy lần đầu, lệnh trên sẽ yêu cầu địa chỉ email và mật khẩu của bạn để tạo người dùng pgAdmin ban đầu.
Mã:
(pgadmin4) $ python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.pyLƯU Ý: Cấu hình xác thực cho chế độ MÁY CHỦ.Nhập địa chỉ email và mật khẩu để sử dụng cho tài khoản người dùng pgAdmin ban đầu:Địa chỉ email: your_emailMật khẩu: your_new_passwordNhập lại mật khẩu:Đang khởi động pgAdmin 4. Vui lòng điều hướng đến http://localhost:5050 trong trình duyệt của bạn.
Lệnh trên sẽ khởi động máy chủ trên cổng 5050 sẽ chỉ lắng nghe localhost. Để truy cập máy chủ từ bên ngoài mạng, bạn sẽ cần phải thực hiện một số thay đổi cấu hình. Sao chép tệp cấu hình pgAdmin.
Mã:
sudo cp ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config.py ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py
Bây giờ hãy chỉnh sửa bản sao cục bộ của tệp cấu hình bằng trình soạn thảo yêu thích của bạn.
Mã:
sudo nano ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py
Thay đổi giá trị máy chủ mặc định từ localhost thành 0.0.0.0, nếu muốn, bạn cũng có thể thay đổi cổng mà ứng dụng đang lắng nghe.
Mã:
DEFAULT_SERVER = '0.0.0.0'# Cổng mặc định mà máy chủ ứng dụng sẽ lắng nghe nếu không được đặt trong# môi trường bởi runtimeDEFAULT_SERVER_PORT = 5050
Khởi động lại máy chủ bằng cách nhập:
Mã:
python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py
Bây giờ bạn có thể truy cập giao diện pgAdmin trên http://your_server_IP:5050.

Kết luận​

Bây giờ bạn đã cài đặt PostgreSQL và pgAdmin trên máy chủ của mình. Bây giờ bạn có thể sử dụng pgAdmin để quản lý cơ sở dữ liệu trên máy chủ PostgreSQL.
 
Back
Bên trên