一,什么是postgresql?
官网:https://www.postgresql.org/
PostgreSQL是开源的对象-关系数据库数据库管理系统,在类似BSD许可与MIT许可的PostgreSQL许可下发行。
PostgreSQL这个单字的拼法让有些人觉得很难读,特别是那些把SQL读作”sequel”的人。PostgreSQL开发者把它读作”post-gress-Q-L”。。它也经常被简称为”postgres”。
开发者 | PostgreSQL Global Development Group |
---|---|
初始版本 | 1996年7月8日 |
稳定版本 | |
源代码库 |
|
编程语言 | C语言 |
操作系统 | Linux, Windows, FreeBSD, OpenBSD, NetBSD, macOS, AIX, HP/UX, Solaris 等[3] |
系统平台 | x86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, Sparc, Sparc 64, ARM, MIPS, MIPSEL, PA-RISC 等[3] |
语言 | 英语 |
类型 | 关系数据库 |
许可协议 | PostgreSQL许可 |
网站 | www![]() |
参考:https://zh.wikipedia.org/wiki/PostgreSQL
二,安装,配置,使用postgresql
安装方式:
1)docker安装
2)源码编译安装
先演示docker 安装:
#下载官方最新镜像
[root@oracle-db-19c ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
docker pull postgres
[root@oracle-db-19c ~]# docker images
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/postgres latest 293e4ed402ba 13 days ago 322 MB
docker image inspect postgres:latest|grep "PG_VERSION"
#为postgresql创建持久化的卷存储
docker volume create postgres-data
#验证持久化数据目录
docker volume inspect postgres-data
docker volume 子命令
docker 专门提供了 volume 子命令来操作数据卷:
create 创建数据卷
inspect 显示数据卷的详细信息
ls 列出所有的数据卷
prune 删除所有未使用的 volumes,并且有 -f 选项
rm 删除一个或多个未使用的 volumes,并且有 -f 选项
#使用持久化数据存储启动 PostgreSQL 容器
docker run -d --restart=always --name postgres-server -p 5432:5432 -v postgres-data:/var/lib/postgresql/data -e "POSTGRES_PASSWORD=iloveKobe1977" postgres
#验证持久化数据目录的内容
ll /var/lib/containers/storage/volumes/postgres-data/_data
#验证本机登陆,在本地主机上安装 PostgreSQL 客户端包
1)添加PostgreSQL Yum存储库
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2)在CentOS 8/RHEL 8上安装PostgreSQL 的相关软件
我们需要在CentOS 8上禁用PostgreSQL AppStream存储库,RHEL 8 Linux包含其他版本的PostgreSQL。
dnf -qy module disable postgresql
确认启用的存储库列表
dnf repolist
检查存储库中是否有PostgreSQL 13软件包
yum search postgresql13
现在在CentOS 8/RHEL 8上安装PostgreSQL 13软件客户端。
dnf install postgresql13
[root@oracle-db-19c ~]# psql -V
psql (PostgreSQL) 13.3
登陆
[root@oracle-db-19c lib]# psql -U postgres -h 127.0.0.1
Password for user postgres:
psql (13.3)
Type "help" for help.
postgres=#
参考:
1)https://techexpert.tips/zh-hans/%E6%B3%A2%E6%96%AF%E7%89%B9%E6%A0%BC%E9%9B%B7%E6%96%AF/postgresql-docker-%E5%AE%89%E8%A3%85/
启用远程数据库连接(可选)
a.编辑文件postgresql.conf
然后将“侦听地址”设置为服务器IP地址或所有接口的“ * ”。
[root@oracle-db-19c _data]# grep "listen_addresses" postgresql.conf
listen_addresses = '192.168.0.71' #如果是docker安装的话,这里只能填*
b.编辑文件pg_hba.conf,还需设置PostgreSQL接受远程连接
[root@oracle-db-19c _data]# tail -2 pg_hba.conf
#accept from trusted subnet
host all all 192.168.0.0/24 md5
一般的postgresql的客户端有多个:
1)pgAdmin4(free)
参考:https://www.jianshu.com/p/e7fe45a10cee
2)Navicat Premium 15(not free)
3)phpMyAdmin
编译安装待补!!!
最后是常用的postgresql的命令
1)查看数据库(字母l)
\l
2)使用数据库
\c databaseName
3)查看表架构
\dn
4)常用命令
# 创建新表
CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);
# 插入数据
INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22');
# 选择记录
SELECT * FROM user_tbl;
# 更新数据
UPDATE user_tbl set name = '李四' WHERE name = '张三';
# 删除记录
DELETE FROM user_tbl WHERE name = '李四' ;
# 添加栏位
ALTER TABLE user_tbl ADD email VARCHAR(40);
# 更新结构
ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
# 更名栏位
ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;
# 删除栏位
ALTER TABLE user_tbl DROP COLUMN email;
# 表格更名
ALTER TABLE user_tbl RENAME TO backup_tbl;
# 删除表格
DROP TABLE IF EXISTS backup_tbl;
5)其他控制台命令
\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。
php环境下,安装postgresql扩展(pgsql和pdo_pgsql)
为了不重新编译php,使用phpize工具进行追加
1.下载phpX安装包
访问php官方下载页,找到自己对应的php版本:https://secure.php.net/downloads.php
wget //cn2.php.net/distributions/php-X.X.X.tar.gz
2.解压并进入ext扩展目录
tar xzf php-X.X.X.tar.gz
cd php-X.X.X/ext/pgsql 或者 cd php-X.X.X/ext/pdo_pgsql
3.运行phpize(我的php安装目录为/usr/local/php/)
whereis phpize
/usr/local/php/bin/phpize
4.编译安装
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
5.修改php配置文件php.ini,添加pgsql.so模块
vi /usr/local/php/etc/php.ini
添加
extension=pgsql.so
extension=pdo_pgsql.so
6.重启php后,检查是否有pgsql模块
php -v
php -m
注:pdo_pgsql操作同上