ubuntu22.04.3 安装postgresql 16 rc1数据库
一、直接安装
# Create the file repository configuration:
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# Update the package lists:
sudo apt-get update
# Install the latest version of PostgreSQL.
# If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
sudo apt-get -y install postgresql
二、源码安装
1、下载源码
https://ftp.postgresql.org/pub/source/v16rc1/postgresql-16rc1.tar.gz
2、解压源文件
tar xf postgresql-16rc1.tar.gz .
3、准备环境,系统必须安装好了gcc make readline zlib 等,建好文件目录
#创建目录
mkdir -p /usr/local/pgsql16rc1
mkdir -p /usr/local/pgsql16rc1/data
#目录授权
sudo chown pgsql:pgsql /usr/local/pgsql16rc1
sudo chown pgsql:pgsql /usr/local/pgsql16rc1/data
#安装依赖库和工具
sudo apt install gcc
sudo apt-get install libreadline-dev
sudo apt-get install zlib1g-dev
sudo apt install make
#配置
./configure --prefix=/usr/local/pgsql16rc1/ --without-icu
#编译安装
make
make install
4、初始化数据库
/usr/local/pgsql16rc1/bin/initdb -D /usr/local/pgsql16rc1/data/
5、启动数据库
/usr/local/pgsql16rc1/bin/pg_ctl -D /usr/local/pgsql16rc1/data/ -l logfile start
6、测试数据库
#创建test库
/usr/local/pgsql16rc1/bin/createdb test
#进入数据库控制台
/usr/local/pgsql16rc1/bin/psql test
test=# \d
test=# \d pg_stat_io
test=# \d pg_stat_all_tables
#创建postgres角色
test=# CREATE ROLE postgres WITH LOGIN PASSWORD 'postgres';
CREATE ROLE
test=# \q
7、配置数据库开放连接
#查看数据库监听端口
sudo netstat -tuln
#查看防火墙状态
sudo ufw status
#编辑postgresql.conf
vim /usr/local/pgsql16rc1/data/postgresql.conf
#修改配置
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
#reserved_connections = 0 # (change requires restart)
#编辑pg_hba.conf
# IPv4 local connections:
host all all 0.0.0.0/32 trust
#重启数据库
/usr/local/pgsql16rc1/bin/pg_ctl restart -D /usr/local/pgsql16rc1/data -l logfile
8、配置数据库连接账号
/usr/local/pgsql16rc1/bin/psql -U postgres
postgres=> \password postgres
Enter new password for user "postgres":
Enter it again:
postgres=> exit
#添加超级用户
sudo -u postgres /usr/local/pgsql16rc1/bin/createuser --superuser <your_username>
#登录数据库
/usr/local/pgsql16rc1/bin/psql -U your_username -d database
#修改用户密码
ALTER USER your_username WITH PASSWORD 'your_password';
#退出重启发现在还是不需要密码
#此时需要修改一下pg_hba.conf的认证方式,trust修改为md5 ,如果忘记密码可以反过来操作即可
# IPv4 local connections:
host all all 0.0.0.0/32 md5
#修改之后重启数据库,就需要密码登录连接数据库了
9、设置数据库开机启动
#/usr/lib/systemd/system/postgresql-16.service
#创建此文件
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=pgsql
Group=pgsql
Environment=PGPORT=5432
Environment=PGDATA=/usr/local/pgsql16rc1/data/
OOMScoreAdjust=-1000
ExecStart=/usr/local/pgsql16rc1/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/usr/local/pgsql16rc1/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/pgsql16rc1/bin/pg_ctl reload -D ${PGDATA} -s
TimeoutSec=300
[Install]
WantedBy=multi-user.target
#重新加载
systemctl daemon-reload
#启动数据库
systemctl start postgresql-16.service
#设置开机启动
systemctl enable postgresql-16.service
10、常用操作命令
使用 pg_ctl 命令
pg_ctl 命令为 PostgreSQL 服务端应用程序,可以用来初始化,启动和停止及控制 PostgreSQL 服务器。
pg_ctl 语法格式:
初始化数据库
pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]
启动数据库
pg_ctl start [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s] [-o OPTIONS] [-p PATH] [-c]
关闭数据库
pg_ctl stop [-D DATADIR] [-M SHUTDOWN-MODE] [-W]
重启数据库
pg_ctl restart [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s] [-o OPTIONS] [-c]
重新加载 postgresql.conf 或 pg_hba.conf 文件
pg_ctl reload [-D DATADIR] [-s]
查看服务器是否在指定的数据目录运行
pg_ctl status [-D DATADIR]
pg_ctl提升 [-D DATADIR] [-W] [-t SECS] [-s]
pg_ctl logrotate [-D DATADIR] [-s]
pg_ctl杀死信号名PID
命令选项
-D, --pgdata=DATADIR:指定数据库相关文件的数据目录,如果省略,默认读取 PGDATA 环境变量
-s, --silent:静默输出,仅仅输出错误消息
-t, --timeout=SECS:指定等待操作完成的最大延时秒数。默认为 PGCTLTIMEOUT 环境变量的值,如果省略,默认60秒
-V, --版本输出版本信息,然后退出
-w, --wait:等待操作完成,如果操作在延迟时间内未完成,pg_ctl 退出状态为非零
-W, --no-wait:不等待操作完成,不会提示数据库停止是否完成
启动 & 重启选项
-c, --core-files 允许 postgres 生成核心文件
-l, --log=FILENAME:将服务器日志输出追加到 filename中,也叫做服务器日志文件。如果该文件的 umask 设置为077,访问日志文件默认情况下其它用户不可读。
-o, --options=OPTIONS 命令行选项,以传递给 postgres(PostgreSQL 服务器可执行文件)或 initdb
-p 路径到POSTGRES通常不是必需的
启动 & 停止选项
-m, --mode=MODE:指定关闭数据库的模式,有三个选项,smart,fast,immediate,省略默认为fast
关库选项
smart:smart模式会等待活动的事务提交结束, 并等待客户端主动断开连接之后关闭数据库
fast:fast模式则会回滚所有活动的事务, 并强制断开客户端的连接之后关闭数据库(默认)
立即:模式立即终止所有服务器进程,当下一次数据库启动时它会首先进入恢复状态(不推荐使用)
标签:postgresql,16,pgsql16rc1,ubuntu22.04,usr,ctl,local,数据库,pg
From: https://www.cnblogs.com/lukezhangsz/p/17703448.html