Postgresql安装和运维

标签: 无 分类: 未分类 创建时间:2023-09-06 10:26:41 更新时间:2025-01-17 10:39:22

1.CentOS安装

我开始的时候就是测试的在 CentOS 系统中安装

1.查看系统版本

查看操作系统版本

1
lsb_release -a

2.在官网上选择自己要安装的系统版本

3.根据提示安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## 安装包源
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

## 安装服务端
yum install postgresql12-server

## 安装客户端
yum install postgresql12

## 初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb

## 开机启动
systemctl enable postgresql-12
systemctl start postgresql-12

4.切换用户,连接数据库

1
2
3
4
5
## 切换用户
su postgres

## 进入命令行
psql

5.修改postgres用户密码

1
2
ALTER USER postgres with PASSWORD 'postgres';

2.Windows安装

我尝试了在 Windows 2008 上安装Postgresql。

1.无法定位程序输入点 GetSystemTimePreciseAsFileTime 于KERNEL32.dll上

我在 windows server 2008 R2 上安装的时候,出现了这个问题。

【尝试方案】
我尝试安装最新的 VC2013 C++ 动态链接库,结果失败了。

【解决方案】
最后我选择了将 Postgresql 的版本,我从 16.RC1 版本,降到了 15.4 版本,基本上安装的时候没有问题了,但是启动pgAdmin4却出现了问题:无法定位程序输入点SetProcessMitigationPolicy 于动态链接库 KERNEL32.Dll 上。但是这个也不要紧,那就不要用pgAdmin4进行数据库管理就好了,可以换成Dbeaver进行数据库管理。

3.Alibaba

我在 Alibaba Cloud Linux 3 上安装了 postgresql
(1) 解决 Errors during downloading metadata for repository ‘pgdg-common’:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cd /etc/yum.repos.d # 找到postgres的.repo, 复制文件名称

vim /etc/yum/pluginconf.d/releasever-adapter.conf

# 如果没有pluginconf.d 使用下面命令
dnf install dnf-plugin-releasever-adapter --repo alinux3-plus

# 将上面复制的repo文件名添加到include后面,用 `,` 隔开
[main]
enabled=1

[releasevermapping]
release_dict={'2.1903' : '7', '3' : '8'}

[reposlist]
include=docker-ce.repo, epel.repo, pgdg-redhat-all.repo

(2) 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 禁用
dnf -qy module disable postgresql
# 服务端
dnf install postgresql16-server
# 客户端
dnf install postgresql16

# 初始化数据库
/usr/pgsql-16/bin/postgresql-16-setup initdb

# 启动
systemctl start postgresql-16
# 开机启动
systemctl enable postgresql-16
# 停止
systemctl stop postgresql-16

# 配置文件
vi /var/lib/pgsql/16/data/postgresql.conf

# 登录,默认密码
su postgres
#
psql
# 修改密码
ALTER postgres root WITH PASSWORD 'xxxx';

# 修改 pg_hba.conf 文件,将 local all all 禁用,可以无密码登录
vi /var/lib/pgsql/16/data/pg_hba.conf
参考文章:
【1】.查看linux操作系统版本:Ubuntu?Centos?还是其他?
【2】.Alibaba Cloud Linux 安装 PostgreSQL 数据库 第三方DNF源仅适配CentOS 8发行版,而在Alibaba Cloud Linux 3中,系统的releasever值与CentOS 8不同,导致DNF解析后的地址无效,从而下载RPM包失败。DNF安装docker-ce时,首先会从系统中获取版本号,即releasever值,然后替换掉相应源baseurl中对应的$releasever变量,之后DNF从替换后的baseurl中获取相关数据。由于CentOS 8的releasever值为8,而Alibaba Cloud Linux 3系统的releasever值为3,因此解析后的baseurl并非预期地址,DNF便无法从这个错误的地址中安装软件包。
【3】.Linux downloads (Red Hat family)
【4】.PostGreSQL安装配置(yum方式)
【5】.pg数据库默认用户名和密码 PostgreSQL 数据库的默认用户名为 postgres,默认密码为空(即没有密码)。在安装 PostgreSQL 数据库后,建议为默认 postgres 用户设置一个密码以增加数据库的安全性。
【6】.pgsql-修改默认密码

4.运维

1.忘记密码

最近遇到一个问题,那就是安装之后,输入 psql 就可以免密登录。

2.远程连接

(1) 修改 安装路径\data\postgresql.conf文件内容。

1
2
## 添加或者打开
listen_addresses = '*'

(2) 修改 安装路径\data\pg_hba.conf文件内容。

1
2
## 增加
host all all 0.0.0.0/0 md5

3.修改默认端口

4.密码复杂度和过期策略

5.开启审计

6.备份和恢复

1
2
3
4
5
# 备份文件到当前目录
pg_dump -U postgres -d myDBname -f dump.sql

# 从当前目录恢复数据
pg_restore -p 10007 -U postgres -h 127.0.0.1 --dbname=disaster --jobs=4 --verbose dump-disaster-202404081019
参考文章:
【1】.Postgresql备份与还原命令pg_dump 这里有恢复和备份到各种参数说明
【2】.PostgreSQl数据库备份与还原
【3】.postgresql 数据库中数据的导入导出(简单操作+示例)
【4】.PostgreSql 数据库备份和恢复 (Backup and Restore) 文件系统级别的备份;连续存档和时间点恢复 (Continuous Archiving and Point-in-Time Recovery 简称 PITR);
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。