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
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.
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.
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.
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áy chủ cơ sở dữ liệu PostgreSQL hiện đã được cài đặt.
Mở tệp cấu hình bằng trình soạn thảo nano.
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.
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.
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ỉ.
Để 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.
Sau khi thay đổi mật khẩu, hãy đăng nhập với tư cách là người dùng postgres.
Bây giờ bạn có thể vào shell PostgreSQL bằng lệnh sau.
Bạn sẽ thấy shell đã thay đổi thành shell PostgreSQL.
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:
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.
Ngoài ra, bạn có thể chạy:
Ý nghĩa của các tham số như sau.
Để tạo cơ sở dữ liệu mới, bạn có thể chạy lệnh sau.
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:
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:
Thoát khỏi trình soạn thảo bằng cách chạy \q.
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.
Để cài đặt pip trên hệ thống của bạn, hãy chạy:
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.
Bây giờ hãy tạo một môi trường ảo cho pgAdmin bằng cách chạy:
Kích hoạt môi trường ảo bằng cách nhập:
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:
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:
Tải xuống gói Python wheel cho pgAdmin bằng cách nhập:
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:
Bây giờ bạn có thể chạy ứng dụng sử dụng:
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.
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.
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.
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.
Khởi động lại máy chủ bằng cách nhập:
Bây giờ bạn có thể truy cập giao diện pgAdmin trên http://your_server_IP:5050.
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
Mã:
sudo pkg install postgresql96-server postgresql96-client
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
Bây giờ hãy khởi tạo cơ sở dữ liệu bằng lệnh sau.
Mã:
sudo service postgresql initdb
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
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ã:
sudo nano /var/db/postgres/data96/postgresql.conf
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
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
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
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
Mã:
su - postgres
Mã:
psql
Mã:
psql (9.6.3)Nhập "help" để được trợ giúp.postgres=#
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
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
Mã:
createuser -sdrP new_user
- 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.
Để tạo cơ sở dữ liệu mới, bạn có thể chạy lệnh sau.
Mã:
createdb new_db
Mã:
ALTER USER new_user WITH ENCRYPTED PASSWORD 'password';
Mã:
GRANT ALL PRIVILEGES ON DATABASE new_db TO new_user;
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
Mã:
sudo python -m surepip
Mã:
sudo pkg install py27-virtualenv
Mã:
virtualenv pgadmin4
Mã:
. pgadmin4/bin/activate
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
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
Mã:
wget --no-check-certificate https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v1.5/pip/pgadmin4-1.5-py2.py3-none-any.whl
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
Mã:
python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py
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.
Mã:
sudo cp ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config.py ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py
Mã:
sudo nano ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py
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
Mã:
python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py