PostgreSQL新手入门

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:

一、介绍

PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES, Version 4.2为基础的对象关系型数据库管理系统(ORDBMS)POSTGRES开创的许多概念在很久以后才出现在商业数据库中。PostgreSQL是最初伯克利代码的一个开放源码的继承者。它支持大部分SQL标准并且提供了许多其它现代特性:杂查询、键、器、可更新的视图、完整性、多版本并控制。另外,PostgreSQL可以用许多方法进行扩展,比如通过增加新的:数据型、函数、操作符、聚合函数、索引方法、过程语言;并且,因为许可证的灵活,任何人都可以以任何目的免费使用、修改、分发PostgreSQL,不管是私用、商用、还是学术研究使用。

二、系统环境

系统平台:CentOS release 6.5 (Final)

PostgreSQL版本:Postgresql 9.4.5

三、安装方式

yum安装

四、安装过程

1yum安装

如果是默认yum 安装的话,会安装较低版本的PostgreSQL 8.4,这不符合我们的要求。

图片 1.png

而这里我们选择使用官方提供的PostgreSQL Yum Repository 来安装最新版本的PostgreSQL

  1. 1   安装PostgreSQL yum Repository

[root@kvm ~]# yum install http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm

  1. 2   安装PostgreSQL

[root@kvm ~]# yum install postgresql94-server postgresql94-contrib

  1. 3   初始化数据库


1447846193445409.png

  1. 4   启动数据库

1447846193728560.png

2、学习使用PostgreSQL

初次安装后,PostgreSQl数据库默认会创建一个postgres的数据库用户作为数据库的管理员,默认密码为空,值得注意的是,与此同时还生成了一个名为postgresLinux系统用户。

这里我们介绍两种常用的创建用户和数据库的方法。

2.1 使用PostgreSQL控制台来操作

首先切换到postgres用户下

1447846193613527.png

使用psql命令登陆PostgreSQL控制台

1447846193714632.png

这时相当于使用系统用户postgres同名的数据库用户的身份登陆数据库,由于初始密码为空所以不需要输入密码,假如系统提示符变成“postgres=#”,表示这时已经进入了数据库控制台。

2.1.1 postgres用户设置一个密码

postgres=# alter user postgres with password 'postgres';或者 \password postgres

1447846193261132.png

2.1.2 创建一个新数据库用户

postgres=# create user zylhz with password 'zylhz';

1447846193445797.png

2.1.3 查看数据库存在的用户及密码

postgres=# select * from pg_user;

postgres=# select * from pg_shadow;

1447846194431645.png

1447846193944542.png

2.1.4 创建数据库

postgres=# create database zylhz;

1447846193426396.png

2.1.5 创建数据库并指定所有者为zylhz

postgres=# create database zylhzcom owner zylhz;

1447846193264488.png

2.1.6 查看存在的数据库

postgres=# \l

1447846193290798.png

2.1.7 zylhzcom数据库的所有权为zylhz

postgres=# grant ALL privileges on database zylhzcom to zylhz;

1447846193144508.png

2.1.8 切换至zylhz数据库

postgres=# \c zylhz

1447846193751143.png

2.1.9 创建表并查看已创建的表

zylhz=# create table test (id integer,name text);

1447846193708484.png

2.1.10 插入数据

zylhz=# insert into test values (2,'zylhzcom');

1447846193727079.png

 2.1.11 退出控制台

zylhz=# \q 或者 ctrld

2.2 使用shell命令行

添加新用户和新数据库,除了在postgreSQL控制台内,还可以在shell命令行下完成。这里要使用的是PostgreSQL提供的命令行程序createusercreatedb

2.2.1 创建数据库用户,并指定其为超级用户

[root@kvm ~]# sudo -u postgres  createuser -W -s zylhz3

2.2.2 登陆数据库平台,设置密码

postgres=# \password zylhz3


图片 1.png

2.2.3 创建数据库,并指定所有者

[root@kvm ~]# sudo -u postgres createdb -O zylhz3 zylhzcom1

2.2.4 登陆数据库

[root@kvm ~]# psql -d zylhzcom1 -U zylhz3 -h 127.0.0.1 -p 5432

图片 2.png

createuser命令介绍

  createuser 创建一个新的PostgreSQL用户。

使用方法:

  createruser [选项]… [用户名]

选项:


  -c, --connection-limit=N  角色的连续限制(缺省:没有限制)
  -d, --createdb            此角色可以创建新数据库
  -r, --createrole          这个角色可以创建新的角色
  -s, --superuser           角色将是超级用户
  -h, --host=HOSTNAME       数据库服务器所在机器的主机名或者套接字目录
  -p, --port=PORT           数据库服务器端口号
  -U, --username=USERNAME   联结用户
  -W,--password             强制提示输入口令
  -w, -no-password          永远不提示输入口令

createdb命令介绍

   createdb 创建一个PostgreSQL数据库

使用方法:

   created [选项]… [数据库名称] [描述]

选项:

   -D, --tablespace=TABLESPACE  数据库默认表空间
   -e, --echo                   显示发送到服务端的命令
   -E, --encoding=ENCODING      数据库编码
   -O, --owner=OWNER            新数据库的所属用户
   -h, --host=HOSTNAME          数据库服务器所在机器的主机名或者套接字目录
   -p, --port=PORT              数据库服务器端口号
   -U, --username=USERNAME      联结用户
   -W,--password                强制提示输入口令
   -w, -no-password             永远不提示输入口令

3PostgreSQL的登陆问题

首先我们前面已经简单演示了postgresql的登陆

[root@kvm ~]# psql -d zylhzcom1 -U zylhz3 -h 127.0.0.1 -p 5432

图片 3.png

上面命令的参数含义如下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口

输入以上的命令之后,系统会提示输入zylhz3的密码,输入正确,就可以登录控制台了。

注意一:

有同学可能会遇到这样的问题:看下图

图片 4.png

其实这个问题是因为postgresql在认证文件中有一个认证标示需要自己选择配置的,所以这里只需要修改认证文件/var/lib/pgsql/9.4/data/pg_hba.conf即可

[root@kvm ~]# vi /var/lib/pgsql/9.4/data/pg_hba.conf

把这个配置文件中的认证 METHODident修改为password,可以实现用账户和密码来访问数据库

其中这个认证标示有"trust", "reject", "md5", "password", "gss", "sspi"这些,你可以按照自己的方式进行设置即可。

注意二:

psql命令存在简写形式。如果当前Linux系统用户,同时也是PostgreSQL用户,则可以省略用户名(-U参数的部分)。举例来说,我的Linux系统用户名为zylhz,且PostgreSQL数据库存在同名用户,则我以zylhz身份登录Linux系统后,可以直接使用下面的命令登录数据库,且不需要密码。


4、控制台命令

除了前面已经用到的\password命令(设置密码)和\q命令(退出)以外,控制台还提供一系列其他命令。


\h:                    查看SQL命令的解释,比如\h select。
\?:                    查看psql命令列表。
\l:                    列出所有数据库。
\c [database_name]:    连接其他数据库。
\d:                    列出当前数据库的所有表格。
\d [table_name]:       列出某一张表格的结构。
\du                     列出所有用户。
\e:                    打开文本编辑器。
\conninfo               列出当前数据库和连接的信息。
\password [user]        设置用户的密码
\q                      退出



本文转自 z永 51CTO博客,原文链接:http://blog.51cto.com/pangge/1739794

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
关系型数据库 Linux 数据库
PostgreSQL 新手入门
PostgresQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。
1470 0
|
关系型数据库 Linux 数据库
|
9月前
|
SQL Cloud Native 关系型数据库
ADBPG(AnalyticDB for PostgreSQL)是阿里云提供的一种云原生的大数据分析型数据库
ADBPG(AnalyticDB for PostgreSQL)是阿里云提供的一种云原生的大数据分析型数据库
729 1
|
9月前
|
数据可视化 关系型数据库 MySQL
将 PostgreSQL 迁移到 MySQL 数据库
将 PostgreSQL 迁移到 MySQL 数据库
1049 2
|
11月前
|
SQL 关系型数据库 Linux
【PostgreSQL】基于CentOS系统安装PostgreSQL数据库
【PostgreSQL】基于CentOS系统安装PostgreSQL数据库
540 0
|
8月前
|
SQL 存储 自然语言处理
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词
在当今社交媒体的时代,人们通过各种平台分享自己的生活、观点和情感。然而,对于平台管理员和品牌经营者来说,了解用户的情感和意见变得至关重要。为了帮助他们更好地了解用户的情感倾向,我们可以使用PostgreSQL中的pg_jieba插件对这些发帖进行分词和情感分析,来构建一个社交媒体情感分析系统,系统将根据用户的发帖内容,自动判断其情感倾向是积极、消极还是中性,并将结果存储在数据库中。
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词
|
8月前
|
关系型数据库 测试技术 分布式数据库
PolarDB | PostgreSQL 高并发队列处理业务的数据库性能优化实践
在电商业务中可能涉及这样的场景, 由于有上下游关系的存在, 1、用户下单后, 上下游厂商会在自己系统中生成一笔订单记录并反馈给对方, 2、在收到反馈订单后, 本地会先缓存反馈的订单记录队列, 3、然后后台再从缓存取出订单并进行处理. 如果是高并发的处理, 因为大家都按一个顺序获取, 容易产生热点, 可能遇到取出队列遇到锁冲突瓶颈、IO扫描浪费、CPU计算浪费的瓶颈. 以及在清除已处理订单后, 索引版本未及时清理导致的回表版本判断带来的IO浪费和CPU运算浪费瓶颈等. 本文将给出“队列处理业务的数据库性能优化”优化方法和demo演示. 性能提升10到20倍.
595 4
|
9月前
|
SQL 存储 人工智能
NineData已支持「最受欢迎数据库」PostgreSQL
NineData 也在近期支持了 PostgreSQL,用户可以在 NineData 平台上进行创建数据库/Schema、管理用户与角色、导出数据、执行 SQL 等操作。另外,NineData SQL 开发企业版,还可以统一管理企业内部 PostgreSQL 的访问、规范与流程、变更发布等。
311 0
NineData已支持「最受欢迎数据库」PostgreSQL
|
9月前
|
存储 Cloud Native 关系型数据库
云原生之使用docker部署Postgresql数据库
云原生之使用docker部署Postgresql数据库
312 0
云原生之使用docker部署Postgresql数据库
|
9月前
|
JSON 安全 关系型数据库
PostgreSQL的优势:为何它成为主流数据库管理系统
PostgreSQL的优势:为何它成为主流数据库管理系统
496 0