世界上功能最强大的开源数据库-PostgreSQL
转载自:https://www.lzfkj.vip/post/22
文章目录
- 简述
- PostgreSQL 特性
- 安装
- 源码安装
- 安装后所常见到的错误
- 1、提示相关命令不存在
- 2、提示连接不了数据库
- 3、提示没有对应role
- 4、提示没有权限
- 5、提示没有启动数据库
- 常用命令
- 常用命令说明
- psql命令
- createdb命令
- 删除数据库 dropdb
简述
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES, 版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。
POSTGRES 领先的许多概念在很久以后才出现在一些商业数据库系统中。
除了上面说的这些,PostgreSQL 还可以允许任何人都可以以任何目的免费使用、修改和分发。
因此可以说 PostgreSQL 是世界上功能最强大的开源数据库。
PostgreSQL 特性
PostgreSQL是最初的伯克利代码的开源继承者,它支持大部分SQL标准并且提供了需要现代特性,如
- 复杂查询
- 外健
- 触发器
- 可更新视图
- 事务完整性
- 多版本并发控制
也支持很多方法的拓展,如:增加新的:
- 数据类型
- 函数
- 操作符
- 聚集函数
- 索引方法
- 过程语言
安装
PostgreSQL 支持很多方式的安装,可以从官网下载打包好的安装包,点击下载地址下载。
源码安装
下面我们来看下源码方式的安装。
./configure
make
su
make install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
使用以下命令检查是否安装成功:
psql --version
如果出现了类似以下的提示,则表示安装成功:
psql (PostgreSQL) 12.1
上面的命令会表示已安装好的PostgreSQL版本,这里安装的是12.1版本。
安装后所常见到的错误
1、提示相关命令不存在
比如:
psql : command not found
这个提示就是说PostgreSQL没有安装好。或者是根本没安装, 或者是你的shell搜索路径没有设置正确。
可以全局搜索下psql命令,
find / -iname psql
或者查找pgsql
find / -iname pgsql
如果没有查询到,表示没有安装成功,进行重新安装即可。
2、提示连接不了数据库
createdb: could not connect to database postgres: could not connect to server: No such file or directoryIs the server running locally and acceptingconnections on Unix domain socket "/tmp/.s.PGSQL.5432"?
这个提示该服务器没有启动,或者没有按照createdb预期地启动。
可以直接启动数据库:
/usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres
3、提示没有对应role
提示类似如下:
could not connect to database postgres: FATAL: role "joe" does not exist
这个提示说明,数据库没有为“joe”创建对应的用户和角色,需要创建之后。
在安装过程中,默认会以当前登录的系统用户为数据库用户,比如可以使用如下命令查看默认用户:
psql --help | grep username
在出来的信息中
-U, --username=USERNAME database user name (default: "michaelkoo")
从出来的信息中,我们可以看到默认用户是michaelkoo,我们目前登录的系统用户就是michaelkoo。
4、提示没有权限
如:
database creation failed: ERROR: permission denied to create database
在这里的提示是没有创建数据库的权限,这个就需要管理员为当前登录的数据库用户授权。
5、提示没有启动数据库
如:
To have launchd start postgresql now and restart at login:brew services start postgresql
Or, if you don't want/need a background service you can just run:pg_ctl -D /usr/local/var/postgres start
可以直接使用命令启动:
/usr/local/var/postgres
常用命令
按以上步骤安装好PostgreSQL数据库后,我们可以查看数据库PostgreSQL所提供的一些常用命令:
clusterdb
oid2name
pg_dump
pg_rewind
postgres
createdb
pg_archivecleanup
pg_dumpall
pg_standby
postmaster
createuser
pg_basebackup
pg_isready
pg_test_fsync
psql
dropdb
pg_checksums
pg_receivewal
pg_test_timing
reindexdb
dropuser
pg_config
pg_recvlogical
pg_upgrade
vacuumdb
ecpg
pg_controldata
pg_resetwal
pg_waldump
vacuumlo
initdb
pg_ctl
pg_restore
pgbench
看起来很多命令,我们摘取其中比较常用到的命令来说明下。
常用命令说明
我们在这里列举几个比较常用的命令。
psql命令
该命令用来进入数据库操作窗口(shell),一般来说,会以用户,用户密码和数据库的方式进行连接,下面我们来看下这个命令的帮助说明。
Usage:psql [OPTION]... [DBNAME [USERNAME]] General options:-c, --command=COMMAND run only single command (SQL or internal) and exit-d, --dbname=DBNAME database name to connect to (default: "michaelkoo")-f, --file=FILENAME execute commands from file, then exit-l, --list list available databases, then exit
从General options中可以看到几个选项,从参数的说明中可以简单看出该选项的使用,在默认情况下(也就是没有加任何参数的情况下),默认会使用当前系统登录的用户来跟当前系统登录的用户同名的数据库,比如当前系统的登录用户为root,那么默认情况下,会连接名为root的数据库。
比如我现在的机器中,当前登录系统登录的用户michaelkoo, 在默认情况下的输出结果如下:
michaelkoo@MacBook ~ % psql
psql: error: could not connect to server: FATAL: database "michaelkoo" does not exist
报错了,提示说名为“michaelkoo”的数据库不存在,我们使用“psql -l” 检查下:
michaelkoo@MacBook ~ % psql -lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges
-----------+------------+----------+---------+-------+---------------------------postgres | michaelkoo | UTF8 | C | C | =Tc/michaelkoo +| | | | | michaelkoo=CTc/michaelkoo+| | | | | postgres=CTc/michaelkootemplate0 | michaelkoo | UTF8 | C | C | =c/michaelkoo +| | | | | michaelkoo=CTc/michaelkootemplate1 | michaelkoo | UTF8 | C | C | =c/michaelkoo +| | | | | michaelkoo=CTc/michaelkootest | postgres | UTF8 | C | C |
根据结果可知,当前确实没有名为“michaelkoo”的数据库存在。
createdb命令
该命令主要是用来创建数据库。比如我们需要创建一个tmp的数据库,可以用如下命令来创建:
createdb tmp
如果没有任何输出,则表示名为“tmp”的数据库创建成功,如果有出现错误提示,请参考前面小节进行处理,然后再操作。
创建数据库命令运行后,我们来检查下数据库tmp是否存在,可以使用“psql -l”来检查。
michaelkoo@MacBook ~ % psql -lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges
-----------+------------+----------+---------+-------+---------------------------postgres | michaelkoo | UTF8 | C | C | =Tc/michaelkoo +| | | | | michaelkoo=CTc/michaelkoo+| | | | | postgres=CTc/michaelkootemplate0 | michaelkoo | UTF8 | C | C | =c/michaelkoo +| | | | | michaelkoo=CTc/michaelkootemplate1 | michaelkoo | UTF8 | C | C | =c/michaelkoo +| | | | | michaelkoo=CTc/michaelkootest | postgres | UTF8 | C | C | tmp | michaelkoo | UTF8 | C | C |
从输出来看,名为“tmp”的数据库已经存在。
删除数据库 dropdb
跟创建数据库有关联的反向操作,就是删除数据库,dropdb就是用来删除数据库,删除数据库和创建数据库一样简单,可以使用命令即可操作完成。比如我们需要删除刚才创建的数据库tmp,我们可以这样操作:
dropdb tmp
执行命令后,如果没有输出任何响应,则表示操作成功,现在我们来检查下刚才的删除数据库tmp是否成功。
michaelkoo@MacBook ~ % psql -lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges
-----------+------------+----------+---------+-------+---------------------------postgres | michaelkoo | UTF8 | C | C | =Tc/michaelkoo +| | | | | michaelkoo=CTc/michaelkoo+| | | | | postgres=CTc/michaelkootemplate0 | michaelkoo | UTF8 | C | C | =c/michaelkoo +| | | | | michaelkoo=CTc/michaelkootemplate1 | michaelkoo | UTF8 | C | C | =c/michaelkoo +| | | | | michaelkoo=CTc/michaelkootest | postgres | UTF8 | C | C |
从以上输出结果可知,名为tmp的数据库已经删除成功。
世界上功能最强大的开源数据库-PostgreSQL相关推荐
- 你了解世界上功能最强大的开源数据库吗?
如果不是领导强制要求,可能根本不会留意到这款号称世界上功能最强大的开源数据库--PostgreSQL.如果你不读这篇文章,或许也会错过一个跃跃欲试想挤进前三的优秀数据库. 为了能够熟练运用,特意买书研 ...
- php postgresql linux,系统运维|在 Ubuntu 上安装世界上最先进的开源数据库 PostgreSQL 9.4 和 phpPgAdmin...
简介 PostgreSQL 是一款强大的,开源的,对象关系型数据库系统.它支持所有的主流操作系统,包括 Linux.Unix(AIX.BSD.HP-UX,SGI IRIX.Mac OS.Solaris ...
- PostgreSQL入门(一)——世界上最先进的开源数据库
前言 首先声明PostgreSQL声称自己是世界上最先进的开源数据库,但是我刚刚接触这个sql,公司原本使用的是orcale,现在的系统都在做兼容PostgreSQL数据库,可能会逐步的替代oracl ...
- 世界上最强大的开源数据库,你了解多少呢?
如果不是领导强制要求,可能根本不会留意到这款号称世界上功能最强大的开源数据库--PostgreSQL.如果你不读这篇文章,或许也会错过一个跃跃欲试想挤进前三的优秀数据库. 为了能够熟练运用,特意买书研 ...
- 世界上第一个便便数据库需要您的帮助!【智能快讯】
By 超神经 AI 无处不在的时代,每天都有新的技术与研究成果出现.无论学术界还是商界,技术还是产品,AI 的新发现都源源不断,在带给我们全新视角的同时,也引起我们更深的思考. 想知道最近的 AI 动 ...
- 哥大创建了世界上第一个医用毒液数据库
你听说过不会毒杀人反而可以治愈人的毒素吗?由于对动物毒液治疗价值的兴趣日益增长,一对哥伦比亚大学的数据科学家创建了关于已知动物毒素及其对人类的生理效应的第一个目录. VenomKB,简称毒液知识库,总 ...
- 开源数据库成为发展自主可控产品的主要途径 ▏开源数据库系列谈之三
利用开源的资源和机制,国内出现了众多的基于开源系统的数据库产品,涉及种类繁多,应用扩大.目前,开源数据库已经成为国产数据库实现突围,发展自主可控产品的主要途径. -------- 作者:刘学习 在信息 ...
- MySQL与PostgreSQL:该选择哪个开源数据库?哪一个更好?
Naresh Kumar是一位软件工程师与热情的博主,对编程与新事物充满了激情和兴趣.近日,Naresh撰写了一篇博文,对开源世界最常见的两种数据库MySQL与PostgreSQL的特点进行了详尽的分 ...
- 【合集】云栖大会珍贵技术资料:20+覆盖容器技术、智能工业、大数据、开源数据库等(下)...
2019独角兽企业重金招聘Python工程师标准>>> 云栖社区从几百位讲师中精挑细选了若干精华,其中涵盖了智能物流.大数据.开源数据库.智能工业.容器技术以及智能应用实践等. 作为 ...
最新文章
- datalist可以放div吗?_炒花生米可以放蜂蜜吗?蜂蜜花生米的正确做法窍门
- Kotlin实战指南一:集合
- 为您的软件系统设计选择最佳的工具
- apc php7,深入解析php之apc
- java 封装的概念_java封装的概念
- 3.3 计算神经网络的输出
- linux json 写sql注入,sql注入之AJAX(SQL Injection (AJAX/JSON/jQuery))
- python做excel自动化-Python控制Excel实现自动化办公
- .xyz文件_Orca.xyz:除了银行系统瑞士还有同样安全的数字保险箱
- js截取字符长度加省略号
- mac安装JDK及maven
- unity3d开发微信小游戏2
- 阿里云iot平台实现MQTT通信(mqtt.fx接入iot平台及测试)
- Java Static关键字详解
- 使用csss实现切角矩形,切角矩形,切角边框
- 【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)
- mb63.net/ios.html,Document
- 软件测试【每日一题20220913】面包师皮特
- 阿英讲算法的时间复杂度
- C#.NET常见问题(FAQ)-方法参数带ref是什么意思