首先更新系统软件包列表,然后通过apt安装PostgreSQL服务器和contrib工具包(包含额外实用工具如pg_dump、pg_restore等):
sudo apt update
sudo apt install postgresql postgresql-contrib
安装完成后,PostgreSQL服务会自动启动,且默认创建postgres系统用户(对应数据库超级用户)和postgres数据库。
使用systemctl命令管理服务状态:
# 启动PostgreSQL服务
sudo systemctl start postgresql
# 设置开机自动启动
sudo systemctl enable postgresql
# 验证服务状态(显示"active (running)"即为成功)
sudo systemctl status postgresql
默认情况下,PostgreSQL仅监听本地连接(localhost)。需修改postgresql.conf文件开启远程监听:
# 编辑配置文件(路径随版本变化,如16版本为/etc/postgresql/16/main/postgresql.conf)
sudo nano /etc/postgresql/<version>/main/postgresql.conf
找到listen_addresses参数,将其修改为'*'(允许所有IP连接)或指定具体IP(如'192.168.1.100'):
listen_addresses = '*'
保存并退出编辑器。
编辑pg_hba.conf文件(位于同一目录),添加允许远程连接的认证规则:
sudo nano /etc/postgresql/<version>/main/pg_hba.conf
在文件末尾添加以下内容(md5表示使用密码认证,0.0.0.0/0允许所有IP;生产环境建议限制为特定IP段,如192.168.1.0/24):
host all all 0.0.0.0/0 md5
保存并退出。
sudo systemctl restart postgresql
可通过sudo systemctl status postgresql确认服务是否正常重启。
默认情况下,postgres用户无密码。需通过psql命令修改密码:
# 切换到postgres用户
sudo -u postgres psql
在psql命令行中,执行以下命令(将your_password替换为强密码):
ALTER USER postgres WITH ENCRYPTED PASSWORD 'your_password';
输入\q退出psql。
# 切换到postgres用户
sudo -u postgres psql
在psql中执行:
CREATE DATABASE mydatabase OWNER myuser; -- 创建数据库并指定所有者(可选)
或直接创建(无指定所有者):
CREATE DATABASE mydatabase;
输入\q退出。
# 切换到postgres用户
sudo -u postgres psql
创建用户并设置密码:
CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypassword';
授予用户对数据库的所有权限:
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
退出psql。
使用新创建的用户连接数据库(本地测试):
psql -U myuser -d mydatabase -h localhost
输入密码后,若成功进入psql命令行(显示mydatabase=>),则配置成功。
ufw,放行PostgreSQL默认端口(5432):sudo ufw allow 5432/tcp
pg_hba.conf中的host规则,仅允许特定IP段连接(如192.168.1.0/24)。以上步骤覆盖了Ubuntu环境下PostgreSQL的基础配置,包括安装、远程访问、用户管理及安全设置。根据实际需求,可进一步调整配置文件(如postgresql.conf中的max_connections、shared_buffers等参数)以优化性能。