文章目录
一、介绍
PostgreSQL是一个功能强大的 开源 的关系型数据库,底层基于C实现。
PostgreSQL使用的开源协议是PostgreSQL许可证,也被称为PostgreSQL开放源码许可证。这是一种自由软件许可证,基于BSD许可证。该许可证允许用户自由地使用、修改和分发PostgreSQL数据库管理系统的源代码。它还允许用户将PostgreSQL用于商业目的,并且没有强制性的要求或限制。这使得PostgreSQL成为一个受欢迎的开源数据库解决方案。
PostgreSQL的名字由两部分组成:Post和SQL。
- "Post"是指Postgres,这是PostgreSQL的前身。Postgres是由Michael Stonebraker和他的团队在加州大学伯克利分校开发的一个关系数据库管理系统。它是早期关系数据库系统的一个重要研究项目。
- "SQL"代表结构化查询语言(Structured Query Language),它是一种用于管理和操作关系数据库的标准语言。PostgreSQL是一个完全支持SQL的关系数据库管理系统。
因此,将这两个部分合并在一起,就得到了PostgreSQL这个名字
PostgreSQL版本迭代的速度比较快,现在最新的正式的发布版本,已经到了16.RELEASE。
PostgreSQL的版本选择一般有两种:
- 如果为了稳定的运行,推荐使用12.x版本。
- 如果想体验新特性,推荐使用14.x版本。
PostgreSQL允许跨版本升级,而且没有什么大问题。
PostgreSQL社区特别活跃,基本是三个月发一版,意味着很多常见的BUG都可以得到及时的修复。
PostgreSQL其实在国外使用的比较多,国内暂时还是以MySQL为主,但是国内很多国产数据库都是基于PostgreSQL做的二次封装:比如华为GaussDB还有腾讯的Tbase等等,甚至很多公司原来玩的Oracle,直接平转到PostgreSQL,同时国内的很多云产品都支持PostgreSQL了。
PostgreSQL因为开源,有很多做数据迁移的工具,可以让你快速的从MySQL,SQLServer,Oracle直接平转到PGSQL中内部,比如pgloader这样的数据迁移工具。
PostgreSQL的官方地址:https://www.postgresql.org
PostgreSQL的国内社区:http://www.postgres.cn/v2/home
推荐使用12.x,比较稳定,而且PostgreSQL中文社区文档也只是翻译这个版本,如下:
二、安装
不推荐在Windows安装,发挥不出全部功能
1、下载安装
打开官方地址:选择我们想要的版本,我们使用的是Linux7.x版本,如下:
按照上图Copy, paste and run the relevant parts of the setup script:
里的命令执行:
# 下载PpstgreSQL的rpm包
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装PostgreSQL
sudo yum install -y postgresql12-server
# 初始化数据库
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
# 设置开机启动PostgreSQL
sudo systemctl enable postgresql-12
# 启动PostgreSQL
sudo systemctl start postgresql-12
最终执行结果,如下图:
2、验证
前面已经安装完成,接下来验证下是否安装成功
PostgreSQL不推荐使用root管理,在安装成功postgreSQL后,他默认会给你创建一个用户:postgres
,无密码,
可以修改密码:ALTER USER postgres WITH PASSWORD '新密码'
- 以超级用户身份登录到PostgreSQL数据库:
sudo -u postgres psql
- 查看有哪些库:
\l
,如下,有三个库,分别是postgres,template0,template1 - 退出PostgreSQL:
\q
注:先切换到:su postgres,再通过命令进入:psql,也是OK的
三、配置
进入目录: cd /var/lib/pgsql/12/data
,基本配置都在这个目录下:
从上图可以看到,postgreSQL的核心文件,都属于postgres用户,所以,操作的时候,尽可能的别用root用户,容易出错,尽可能先切换到postgres用户,再去操作。
主要操作的是postgresql.conf和pg_hba.conf。
1、远程连接配置
PostgreSQL默认情况下不支持远程连接的,这个跟MySQL几乎一样
- MySQL给mysql.user追加用户,一般是采用grant的命令去配置。
- PostgreSQL要基于配置文件修改,配置用户是否可以远程连接。
1)配置postgresql.conf
postgresql.conf是PostgreSQL的主要配置文件,它包含了许多数据库服务器的全局设置选项。通过修改这个文件,您可以配置数据库服务器的各种参数,如监听地址、端口号、最大连接数、日志记录等。这个文件的修改通常需要重启数据库服务器才能生效。
修改/var/lib/pgsql/12/data/postgresql.conf配置文件,初始配置如下:
默认情况下,PostgreSQL只允许localhost连接,直接配置为*即可
2)配置pg_hba.conf
pg_hba.conf是PostgreSQL的身份验证配置文件,它定义了哪些客户端可以连接到数据库服务器以及如何进行身份验证。通过修改这个文件,您可以控制访问数据库的权限,配置不同用户的身份验证方法,以及定义访问控制规则。修改pg_hba.conf文件后,通常需要重新加载配置或重启数据库服务器才能使更改生效。
修改/var/lib/pgsql/12/data/pg_hba.conf配置文件,初始配置如下:
模板参数说明:
- type:local代表本地连接,host代表可以指定连接的ADDRESS
- database:数据库名,如果写all,代表所有库都可以连接
- user:连接的用户,可以写all,代表所有用户
- address:代表那些IP地址可以连接
- method:加密方式,一般直接md5
我们按照上面的模板定义一个,支持远程用户访问,如下:
注:配置尽量写在前面,因为是从上往下匹配的
3)重启
修改完上面的两个配置文件,都需要重启下:
systemctl restart postgresql-12
2、配置数据库的日志
cat /var/lib/pgsql/12/data/postgresql.conf
,里面有关于日志的配置,如下:
PostgreSQL默认情况下,只保存7天的日志,循环覆盖,默认参数如下:
# 代表日志是开启的。
logging_collector = on
# 日志存放的路径,默认放到当前目录下的log里
log_directory = 'log'
# 日志的文件名,默认是postgresql为前缀,%a表示把星期作为后缀
log_filename = 'postgresql-%a.log'
# 日志文件会被覆盖
log_truncate_on_rotation = on
# 一天一个日志文件
log_rotation_age = 1d
# 日志文件,没有大小限制
log_rotation_size = 0
四、图形化界面
1、pgAdmin
下载地址:https://www.pgadmin.org/download/pgadmin-4-windows/
傻瓜式安装,选择安装目录,一直下一步即可
打开pgAdmin
创建一个连接,设置连接名
设置连接信息
点击“Save”,就可以postgres的信息,如下:
如需中文界面,可以在File>Preferences设置
2、Navicat
它是收费的,连接如下:
配置连接信息:
点击确定,就可以postgres的信息,如下