PostgreSQL安装和使用

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: [TOC]### postgresql安装 window- - - [一、安装](https://edu.csdn.net/skill/pg/pg-940afa6d71af44f689011ded8fd91a98?category=594&typeId=20367#_2) - [二、初始化配置](https://edu.csdn.net/skill/pg/pg-940afa6d71af44f689011ded8fd91a98?category=594&typeId=20367#_27) - [三、启动](https://edu.csdn.net/skill/pg/p

postgresql安装 window一、安装二、初始化配置三、启动登录使用1.查看当前系统版本:2.安装 PostgreSQL3.使用PostgreSQL控制台修改 postgres 数据库用户密码4.数据库基本操作实例5.PostgreSQL 的 timestamp 类型Reference

postgresql安装 window

一、安装

1.下载postgresql安装包。(1)下载地址:官网下载地址(2)开始安装

  • ① 双击下载的安装包
  • ②选择程序安装目录
  • ③选择数据存放目录
  • ④输入用户的密码(要记住)
  • ⑤设置服务监听端口,默认为5432
  • ⑥选择运行时语言环境(注:选择数据库存储区域的运行时语言环境(字符编码格式)。在选择语言环境时,若选择"default locale"会导致安装不正确;同时,PostgreSQL 不支持 GBK 和 GB18030 作为字符集,如果选择其它四个中文字符集:中文繁体 香港(Chinese[Traditional], Hong Kong S.A.R.)、中文简体 新加坡(Chinese[Simplified], Singapore)、中文繁体 台湾(Chinese[Traditional], Taiwan)和中文繁体 澳门(Chinese[Traditional], Marco S.A.R.),会导致查询结果和排序效果不正确。建议选择"C",即不使用区域。----我选择了default localt,安装正确;建议选择default localt。)
  • ⑦直到最后安装结束,去掉勾选,直接点 Finish

二、初始化配置

  • ①首先cmd打开一个命令窗口键入(参照自己的文件路径,后续在在bin下执行)cd E:PostgreSQL\bin
  • ②初始化数据库initdb -D E:\PostgreSQL\data -E UTF8如果data目录存在,可以先删除,再重新键入上面语句;也可以直接忽略此步骤
  • ③注册服务即将postgres注册为服务,服务名为pgsql继续键入:pg_ctl register -D E:\software\postgresql\data -N pgsql
  • ④启动服务,另开一个cmd输入net start pgsql会显示启动成功后续启动服务可以直接这样造作(成功的话任务管理器的服务下也会出现该服务名称的)

三、启动

打开 pgAdmin 4(在开始菜单里直接找即可)pgAdmin 主页如下:

点击左侧的 Servers

首次进入一般需要输入密码(安装时设置的那个密码),点击 OK 即可

最终连接成功后打开的界面:

登录

一、在默认配置条件下,本机访问PostgreSQL

切换到Linux用户postgres,然后执行psql:

$ su - postgres

Last login: Wed Mar 1 13:16:48 CST 2017 on pts/1-bash-4.2$ psql

psql (9.2.18)Type "help" for help.

postgres=#

此时就在数据库postgres中了。

使用 psql -d [databasename] 可登录其他数据库。

注意:执行psql命令时,必须确认已配置postgresql的环境变量。


二、创建新用户来访问PostgreSQL

1、如上所述,先切换到Linux用户postgres,并执行psql:

$ su - postgres

-bash-4.2$ psql

postgres=#

现在位于数据库提示符下。

2、创建数据库新用户,如 dbuser:

postgres=# CREATE USER dbuser WITH PASSWORD '*****';

注意:

  1. 语句要以分号结尾。
  2. 密码要用单引号括起来。

3、创建用户数据库,如exampledb:

postgres=# CREATE DATABASE exampledb OWNER dbuser;

4、将exampledb数据库的所有权限都赋予dbuser:

postgres=# GRANT ALL PRIVILEGES ON DATABASE exampledb TO dbuser;

5、使用命令 \q 退出psql:

postgres=# \q

6、创建Linux普通用户,与刚才新建的数据库用户同名,如 dbuser:

$ sudo adduser dbuser

$ sudo passwd dbuser

7、以dbuser的身份连接数据库exampledb:

$ su - dbuser

Password: Last login: Wed Mar 1 11:52:07 CST 2017 on pts/

[dbuser@master ~]$ *psql -d exampledb*


三、最简单的做法

以你的普通Linux用户名,在数据库中创建同名的用户和数据库,如xxf,然后就可以本机直接连接到数据库xxf了。

~> su - postgresPassword: Last login: Wed Mar 1 13:19:02 CST 2017 on pts/1-bash-4.2$ psqlpsql (9.2.18)Type "help" for help.

postgres=# create user xxf with password '****';CREATE ROLEpostgres=# create database xxf owner xxf;CREATE DATABASEpostgres=# grant all privileges on database xxf to xxf;GRANTpostgres=# \q-bash-4.2$ exitlogout~> *psql*psql (9.2.18)Type "help" for help.

xxf=>

至此,就在数据库xxf中了。


四、开启远程访问

1、编辑配置文件

文件:postgresql.conf

位置:/var/lib/pgsql/data/postgresql.conf

添加/修改:在所有IP地址上监听,从而允许远程连接到数据库服务器:

listening_address: '*'


文件:pg_hba.conf

位置:/var/lib/pgsql/data/pg_hba.conf

添加/修改:允许任意用户从任意机器上以密码方式访问数据库,把下行添加为第一条规则:

host   all       all       0.0.0.0/0        md5


2、重启数据库服务:

$ sudo systemctl restart postgresql


3、此后即可从其它机器上登录,例如用Navicat for PostgreSQL:

主机名或IP: 172...*

端口:      5432

初始数据库: xxf

用户:      xxf

密码:      **  (数据库用户xxf的密码,不是Linux用户xxf的密码)

使用

PostgreSQL入门-安装与基本使用(Ubuntu)

PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),号称是 “世界上最先进的开源关系型数据库”。

PostgreSQL 是以加州大学计算机系开发的 POSTGRES 4.2版本为基础的对象关系型数据库。

今天在Ubuntu系统上,我们一起来安装并简单使用一下PostgreSQL数据库。

1.查看当前系统版本:

$ cat /etc/issue

Ubuntu 16.04.6 LTS \n \l

$ sudo lsb_release -a

LSB Version:    

core-9.20160110

ubuntu0.2-amd64:core-9.20160110

ubuntu0.2-noarch:security-9.20160110

ubuntu0.2-amd64:security-9.20160110

ubuntu0.2-noarch

Distributor ID: Ubuntu

Description:    Ubuntu 16.04.6 LTS

Release:    16.04

Codename:   xenial

系统是 Ubuntu 16.04.6 LTS。

2.安装 PostgreSQL

$ sudo apt-get install postgresql

执行实例如下:

$ sudo apt-get install postgresql

Reading package lists... Done

Building dependency tree      

Reading state information... Done

The following additional packages will be installed:

 libpq5

 postgresql-9.5

 postgresql-client-9.5

 postgresql-client-common

 postgresql-common

 postgresql-contrib-9.5

 ssl-cert

… …

Creating config file /etc/postgresql-common/createcluster.conf with new version

Creating config file /etc/logrotate.d/postgresql-common with new version

Building PostgreSQL dictionaries from installed myspell/hunspell packages...

Removing obsolete dictionary files:

Setting up postgresql-9.5 (9.5.19-0ubuntu0.16.04.1) ...

Creating new cluster 9.5/main ...

 config /etc/postgresql/9.5/main

 data   /var/lib/postgresql/9.5/main

 locale en_US.UTF-8

 socket /var/run/postgresql

 port   5432

update-alternatives: using /usr/share/postgresql/9.5/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode

Setting up postgresql (9.5+173ubuntu0.2) ...

Setting up postgresql-contrib-9.5 (9.5.19-0ubuntu0.16.04.1) ...

Processing triggers for libc-bin (2.23-0ubuntu11) ...

Processing triggers for ureadahead (0.100.0-19.1) ...

Processing triggers for systemd (229-4ubuntu21.21) ...

默认已经安装了 postgresql 的服务器(postgresql-9.5)和客户端(postgresql-client-9.5)。

2019年10月03日,已经发布了PostgreSQL 12,如果想安装最新版的,需要更新一下源,参加 PostgreSQL Apt Repository

可以使用 psql --version 来查看当前安装的版本:

$ psql--version

psql (PostgreSQL) 9.5.19

安装后会默认生成一个名为 postgres的数据库和一个名为postgres的数据库用户。

同时还生成了一个名为 postgres 的 Linux 系统用户。

可以使用以下命令查看:

#查看用户

$ cat /etc/passwd

#查看用户组  

$ cat /etc/group

3.使用PostgreSQL控制台修改 postgres 数据库用户密码

默认生成的 postgres 的数据库用户没有密码,现在我们使用 postgres Linux用户的身份来登录到管理控制台中。

# 切换到postgres用户。

$ sudosu- postgres

postgres@iZm5e8p54dk31rre6t96xuZ:~$

postgres@iZm5e8p54dk31rre6t96xuZ:~$ whoami

postgres

Linux 用户 postgres 以同名的 postgres 数据库用户的身份登录,不用输入密码的。

postgres@iZm5e8p54dk31rre6t96xuZ:~$ psql

psql (9.5.19)

Type "help"for help.

postgres=#

使用 \password 命令,为 postgres 用户设置一个密码

postgres=#

postgres=# CREATE USER db_user WITH PASSWORD 'PWD123456';

CREATE ROLE

postgres=#

创建用户数据库,这里为testdb,并指定所有者为db_user。

postgres=# CREATE DATABASE testdb OWNER db_user;

CREATE DATABASE

postgres=#

将 testdb 数据库的所有权限都赋予 db_user 数据库用户, 否则 db_user 只能登录控制台,没有数据库操作权限。

postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO db_user;

GRANT

使用 \du 查看当前的数据库用户:

postgres=# \du;

              List of roles

Role name |    Attributes                      | Member of

-----------+------------------------------------------------+-----------

db_user   |                                                       | {}

postgres  | Superuser,Create role,Create DB,Replication,Bypass RLS | {}

最后,使用 \q 命令退出控制台, 并使用 exit 命令退出当前 db_user Linux用户。

postgres=# \q

postgres@iZm5e8p54dk31rre6t96xuZ:~$

postgres@iZm5e8p54dk31rre6t96xuZ:~$ exit

logout

4.数据库基本操作实例

创建数据库与删除数据库:

# 创建数据库

postgres=# CREATE DATABASE lusiadas;

CREATEDATABASE

# 删除数据库

postgres=# DROP DATABASE lusiadas;

DROPDATABASE

使用 \c 切换数据库:

postgres=# CREATE DATABASE testdb;

CREATEDATABASE

postgres=# \c testdb;

SSLconnection(protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits:256, compression: off)

You are now connected todatabase"testdb"asuser"postgres".

新建表与删除表:

# 创建一个表 tb_test:(两个字段,其中id 为自增ID)

testdb=>CREATETABLE tb_test(id bigserial, name VARCHAR(20));

CREATETABLE

# 删除一个表 tb_test

testdb=>DROPtable tb_test;

DROPTABLE

增删改查操作:

# 创建一个用户表 tb_users(三个字段,其中id 为自增ID)

testdb=>CREATETABLE tb_users(id bigserial, age INTDEFAULT0, name VARCHAR(20));

CREATETABLE

 

# 使用 INSERT 语句插入数据

testdb=>INSERTINTO tb_users(name, age)VALUES('张三丰',212);

INSERT01

testdb=>INSERTINTO tb_users(name, age)VALUES('李四光',83);

INSERT01

testdb=>INSERTINTO tb_users(name, age)VALUES('王重阳',58);

INSERT01

# 查询数据

testdb=>select*from tb_users;

id | age |  name  

----+-----+--------

 1|212| 张三丰

 2|  83| 李四光

 3|  58| 王重阳

(3 rows)

testdb=>select*from tb_users WHERE id=3;

id | age |  name  

----+-----+--------

 3|  58| 王重阳

(1row)

# 更新数据 (执行后输出更新的条数,第二次执行失败所以输出为`UPDATE 0`)

testdb=>UPDATE tb_users set name ='全真派王重阳'WHERE name ='王重阳';

UPDATE1

testdb=>UPDATE tb_users set name ='全真派王重阳'WHERE name ='王重阳';

UPDATE0

# 插入2条数据

testdb=>INSERTINTO tb_users(name, age)VALUES('赵四',0);

INSERT01

testdb=>INSERTINTO tb_users(name, age)VALUES('赵五娘',0);

INSERT01

# 模糊查询

testdb=>SELECT*FROM tb_users WHERE name LIKE'赵%';

id | age |  name  

----+-----+--------

 4|   0| 赵五娘

 5|   0| 赵四

(2 rows)

# 修改表结构: 新增字段

testdb=# ALTER TABLE tb_users ADD email VARCHAR(50);

ALTERTABLE

# 修改表结构: 修改字段

testdb=# ALTER TABLE tb_users ALTER COLUMN email TYPE VARCHAR(100);

ALTERTABLE

# 删除字段

testdb=# ALTER TABLE tb_users DROP COLUMN email;

ALTERTABLE

# 删除记录

testdb=>DELETEFROM tb_users WHERE id =5;

DELETE1

使用 pg_database_size() 查看数据库的大小:

testdb=# select pg_database_size('testdb');

pg_database_size

------------------

         7991967

(1row)

testdb=# select pg_size_pretty(pg_database_size('testdb'));

pg_size_pretty

----------------

7805 kB

(1row)

5.PostgreSQL 的 timestamp 类型

查询 current_timestamp

testdb=# select current_timestamp;

      current_timestamp      

-------------------------------

2019-11-1108:33:35.369887+00

(1row)

使用 current_timestamp(0) 定义时间类型精度为0:(有时区)

testdb=# select current_timestamp(0);

  current_timestamp    

------------------------

2019-11-1108:31:08+00

(1row)

使用 current_timestamp(0) 定义时间类型精度为0:(去掉时区)

testdb=# select current_timestamp(0)::timestamp without time zone;

 current_timestamp  

---------------------

2019-11-1108:31:20

(1row)

testdb=# select cast (current_timestamp(0) as  timestamp without time zone);

 current_timestamp  

---------------------

2019-11-1108:32:26

(1row)

时间戳:

testdb=# select extract(epoch from now());

   date_part    

------------------

1573461495.47821

(1 row)

设置数据库时区:

视图 pg_timezone_names 保存了所有可供选择的时区:

# 查看时区  

select * from pg_timezone_names;  

比如可以选择上海 Asia/Shanghai 或重庆 Asia/Chongqing, 最简单的直接 PRC:

testdb=# set time zone 'PRC';

SET

testdb=# show time zone;

TimeZone

----------

PRC

(1 row)

testdb=# SELECT LOCALTIMESTAMP(0);

  localtimestamp    

---------------------

2019-11-1116:42:54

(1 row)

Reference

https://www.postgresql.org/docs/8.4/sql-altertable.htmlhttp://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html

[END]

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6月前
|
关系型数据库 数据库 数据安全/隐私保护
PostgreSQL安装和使用教程
PostgreSQL安装和使用教程
286 0
|
7月前
|
SQL Kubernetes 关系型数据库
如何一键安装部署PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署PolarDB-X。
347 0
|
8月前
|
存储 关系型数据库 数据库
Windows安装Postgresql之解压版
Windows安装Postgresql之解压版
298 0
|
6月前
|
关系型数据库 Linux PostgreSQL
Linux centos8 docker中安装postgresql12.4及远程访问设置
Linux centos8 docker中安装postgresql12.4及远程访问设置
367 0
|
9月前
|
关系型数据库 数据安全/隐私保护 PostgreSQL
Windows环境下安装PostgreSQL
Windows环境下安装PostgreSQL
222 0
|
13天前
|
关系型数据库 PostgreSQL
postgresql安装
postgresql安装
34 8
|
1月前
|
SQL 关系型数据库 分布式数据库
PolarDB常见问题之安装postgis报错如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
1月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB常见问题之安装gms时出现docker如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
2月前
|
关系型数据库 数据库 PostgreSQL
Docker安装postgreSql
Docker安装postgreSql步骤
|
2月前
|
关系型数据库 Linux Shell
Centos系统上安装PostgreSQL和常用PostgreSQL功能
Centos系统上安装PostgreSQL和常用PostgreSQL功能