第2章-PostgreSQL 15安装及登录
- 1、windows安装
- 2、centos/redhat安装(在线安装)
- 3、源码安装
- 4、登录
- 4.1 本地登录
- 4.2 远程登录
1、windows安装
按照提示双击安装包一步一步操作即可
2、centos/redhat安装(在线安装)
# 安装源
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 查看yum源配置文件是否下载
ll /etc/yum.repos.d# 安装依赖包
yum install epel-release.noarch -y
yum install libzstd.x86_64 -y
# 如果报错Another app is currently holding the yum lock; waiting for it to exit... The other application is: PackageKit Memory : 152 M RSS (573 MB VSZ) Started: Sun Jan 29 09:34:38 2023 - 01:58 ago State : Sleeping, pid: 2846
# 解决办法
# 1、重启虚拟机
# 2、删除此文件 rm -f /var/run/yum.pid# 安装
yum install -y postgresql15-server
# 安装辅助工具包
yum install -y postgresql15-contrib# 创建实例
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb# 管理
# 自启
systemctl enable postgresql-15
# 开启
systemctl start postgresql-15
# 关闭
systemctl stop postgresql-15
# 查看
systemctl status postgresql-15# 默认路径
/var/lib/pgsql/15/data# 登录
su - postgres # 初始化密码不知道所以登录前先改密码,密码:123456
psql# 版本
show server_version;
# 可能版本不是最新,如果想安装最新版本,需要源码安装。# 退出
\q
3、源码安装
# 依赖包
yum -y install gcc-c++
yum install -y readline-devel
yum install -y zlib-devel# 上传解压
tar -xvf postgresql-15.1.tar.bz2# 编译安装
./configure --prefix=/usr/local/pg15# 路径
--prefix=PREFIX # 将所有文件安装在PREFIX目录下,默认/usr/local/pgsql
--exec-prefix=EXEC-PREFIX # 可以在不同的前缀EXEC-PREFIX下安装与体系结构相关的文件,而不是prefix设置的前缀。这对于在主机之间共享独立于体系结构的文件非常有用。如果省略这一点,则EXEC-PREFIX将被设置为PREFIX,并且与体系结构相关的和独立的文件将被安装在同一树下,这可能正是您想要的。
--bindir=DIRECTORY # 指定可执行程序的目录。默认值是EXEC-PREFIX/bin# 特性
--enable-nls[=LANGUAGES] # 启用本地语言支持(NLS),即以英语以外的语言显示程序消息的能力。
--with-perl # 使用PL/Perl语言来编写自定义函数。
--with-python # 使用python语言来编写PL/Python自定义函数。# 禁用
--without-readline # 防止使用Readline库(以及libedit)。
--without-zlib # 阻止使用Zlib库。这将禁用pg_dump和pg_restore中对压缩档案的支持。make -j 4;make install -j 4# 做链接
ln -sf /usr/local/pg15 /usr/local/pgsql
# 可以编译安装高版本的PG,之后停掉数据库,将目录指向新的数据库。# 创建用户
useradd postgres
echo "pg123" | passwd --stdin postgres# 环境变量
su - postgres
vi .bash_profile
export PATH=/usr/local/pgsql/bin:$PATH
export LD_LIBARARY_PATH=/usr/local/pgsql/lib:$LD_LIBARARY_PATH
export PGDATA=/home/postgres/pgdata# 创建实例
initdb# 启动
pg_ctl start -D $PGDATA# 登录
psql -d postgres -p 5432# 关闭
pg_ctl stop -D $PGDATA [-m ***]
smart # 所有连接终止后关闭数据库。如果客户端一直不终止,则无法关闭数据库。
fast # 快速关闭数据库。如果有客户端连接则断开,让已有未提交的事务回滚。
immediate # 立即关闭,未提交事务未回滚。下次启动数据库需要进行恢复。# 查看
\l# 脚本
echo "alias pgst='pg_ctl start -D $PGDATA'" >>/home/postgres/.bashrc
echo "alias pgsp='pg_ctl stop -D $PGDATA -m fast'" >>/home/postgres/.bashrc
echo "alias pglg='psql -d postgres -p 5432 -L /home/postgres/pg.log'" >>/home/postgres/.bashrc
4、登录
4.1 本地登录
psql
-U 用户名(默认postgres)
-W 密码
-h 数据库IP(默认本地登录)
-p 数据库端口(默认5432)
-d 需要访问的数据库名称(默认postgres库)# 修改PG用户密码
alter user postgres with password 'pg123';-L 输出日志的路径
4.2 远程登录
# 参数
vi /home/postgres/pgdata/pg_hba.conf
host all all 0/0 trust
# trust 无条件地允许连接。这种方法允许任何可以连接到PostgreSQL数据库服务器的人以任何PostgreSQL用户登录,而不需要密码或任何其他身份验证。host all all 0/0 md5
# md5 对用户的密码进行scran - sha -256或MD5验证,需要输入密码。vi /home/postgres/pgdata/postgresql.conf
listen_addresses = '*'
port = 5432 # 账号
create user test with password 'test123';
create database testdb with encoding='utf8' owner=test;
grant all privileges on database testdb to test; alter user postgres with password 'pg123';# 登录
psql -U test -W test123 -h 10.0.0.151 -p 5432 -d testdb
psql -U postgres -h 172.17.0.3 -p5432 -d postgres
-U 用户名
-h 数据库IP
-p 数据库端口
-d 需要访问的数据库名称