博客原文
从PostgreSQL官网下载PostgreSQL的安装包
$ VERSION=16.1
$ wget https://ftp.postgresql.org/pub/source/v$VERSION/postgresql-$VERSION.tar.gz
$ tar zxvf postgresql-$VERSION.tar.gz
$ cd postgresql-$VERSION
# 创建postgreSQL的安装目录
$ mkdir /usr/local/postgresql
# 检查环境配置--prefix是指定postgreSQL安装路径
$ ./configure --prefix=/usr/local/postgresql
环境依赖报错:
configure: error: no acceptable C compiler found in $PATH
apt install -y gcc
configure: error: ICU library not found
./configure --prefix=/usr/local/postgresql --without-icu
configure: error: readline library not found
apt-get install -y libreadline-gplv2-dev
configure: error: zlib library not found
apt-get install zlib1g-dev
$ make && make install
$ cd contrib
$ make && make install
$ groupadd postgres
$ useradd -g postgres postgres -d /home/postgres
$ id postgres
uid=1001(postgres) gid=1001(postgres) groups=1001(postgres)
# 设置密码
$ passwd postgres
# 输入密码
只要暴露 PGDATA 即可
$ mkdir -p /var/postgresql/data
$ chown -R postgres:postgres /usr/local/postgresql
$ chown -R postgres:postgres /var/postgresql
$ chmod -R 775 /var/postgresql/*
$ vi /etc/profile # 添加以下行, 不要使用 cat << EOF
export PGHOME=/usr/local/postgresql
export PGDATA=/var/postgresql/data
export PATH=$PATH:$PGHOME/bin
$ source /etc/profile
$ cd ~/postgresql-16.1/contrib/start-scripts
$ vi linux
修改 prefix 为安装目录 /usr/local/postgresql
修改 PGDATA 为数据目录 /var/postgresql/data
注意, PGUSER 为运行 postgre 的用户
$ chmod a+x linux
$ cp linux /etc/init.d/postgresql
# 设置postgresql服务开启自启动
$ systemctl enable postgresql
systemctl 服务开机自启失败: update-rc.d: error: postgresql Default-Start contains no runlevels, aborting.
$ vi /etc/init.d/postgresql
在 #!/bin/sh 头部下添加一下注释
>>>>>>>>>>>>>>>
### BEGIN INIT INFO
# Provides: XXX
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start XXX daemon at boot time
# Description: Start XXX daemon at boot time
### END INIT INFO
<<<<<<<<<<<<<<<<
# 初始化数据库
$ initdb -D /var/postgresql/data
# 启动服务
$ pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile start
#连接数据库
$ psql
# 创建数据库
postgres=# create database test;
# 创建表
postgres=# create table t_user (id integer, name text);
# 插入测试数据
postgres=# insert into t_user values (1,'joke');
# 查询数据
postgres=# select * from t_user ;
#退出psql窗口
postgres=# \q
1. 修改监听所有网络以及数据库连接数
# 修改配置文件
$ vim /var/postgresql/data/postgresql.conf
# listen_addresses = 'localhost' 监听本机,'*'监听所有网络
listen_addresses = '*'
# max_connections 数据库的连接数根据具体需求更改
2. 远程访问
$ vim /var/postgresql/data/pg_hba.conf
#在文件的最下方加上下面的这句话,最后一个 trust 表示所有用户不需要密码,需要密码要设置为 md5
host all all 0.0.0.0/0 md5
3. 基础运维命令
# 切换postgres用户
$ su - postgres
# 重启服务
$ pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile restart
# 停止服务
$ pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile stop
4. 防火墙
# 切换root用户
$ su - root
# 防火墙 允许5432 端口
$ ufw allow 5432
5. 修改密码
# 切换用户
$ su - postgres
# 客户端登录
$ psql
# psql -U postgres -h 127.0.0.1 -p 5432
# 修改密码
postgres=# alter user postgres with password '123456';
ALTER ROLE
$ echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
# 添加秘钥
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ apt update
# 查看版本
$ apt-cache madison postgresql # 服务端
$ apt-cache madison postgresql-contrib # 服务端工具包
$ apt-cache madison postgresql-client # 客户端
# 安装 postgresql
$ apt install -y postgresql-16 postgresql-contrib postgresql-client
# apt install -y postgresql
apt 安装会默认创建一个
postgres
用户
$ systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2024-01-27 10:40:44 UTC; 51s ago
Main PID: 6952 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 4557)
Memory: 0B
CGroup: /system.slice/postgresql.service
Jan 27 10:40:44 ubuntu systemd[1]: Starting PostgreSQL RDBMS...
Jan 27 10:40:44 ubuntu systemd[1]: Finished PostgreSQL RDBMS.
# 开机自启
$ systemctl enable --now postgresql
# ps -ef 获取 postgre 的配置文件位置
$ ps -ef|grep postgre
# 修改监听地址
$ sed -i "s@#listen_addresses = 'localhost'@listen_addresses = '*'@g" /etc/postgresql/16/main/postgresql.conf
# 我们可以从配置文件知道 hba_file 的位置
# 修改 hba_file 添加支持 md5 密码登录
$ echo "host all all 192.168.154.0/24 md5" >> /etc/postgresql/16/main/pg_hba.conf
$ systemctl restart postgresql
# 切换用户
$ su - postgres
# 客户端登录
$ psql
# psql -U postgres -h 127.0.0.1 -p 5432
# 修改密码
postgres=# alter user postgres with password '123456';
ALTER ROLE