文档章节

【Linux】【PostgreSQL】PostgreSQL安装

o
 osc_9ow0lf0i
发布于 2019/09/19 16:36
字数 1754
阅读 111
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

前言

  PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。

安装

1.下载PostgreSQL   https://www.enterprisedb.com/download-postgresql-binaries

 下载相应版本通过ftp上传到服务器的/home路径下,然后解压,得到pgsql文件夹

2.创建pgsql用户并创建密码:

1 [root@localhost home]# useradd postgres
2 [root@localhost home]# passwd postgres
3 更改用户 postgres 的密码 。
4 新的 密码:
5 无效的密码: 密码包含用户名在某些地方
6 重新输入新的 密码:
7 passwd:所有的身份验证令牌已经成功更新。

注意:这里设置密码是linux用户postgres的登录密码,不是pgsql服务器的密码

3.创建pgsql的数据目录并赋权限

1 # 当前目录在/home下
2 [root@localhost home]# pwd
3 /home
4 
5 # 创建/home/pgsql/pgsql_data
6 [root@localhost home]# mkdir pgsql/pgsql_data
7 
8 # 赋予pgsql_data文件夹 postgres用户权限
9 [root@localhost home]# chown postgres:postgres pgsql/pgsql_data

4.初始化数据库

切换到postgres用户来操作数据库,pgsql数据库就以postgres为默认用户,执行: su - postgres 切换

 1 # 切换到postgres用户
 2 [root@localhost home]#  su  postgres
 3 
 4 -bash-4.2$ pwd
 5 /home
 6 
 7 # 初始化数据库
 8 -bash-4.2$ /home/pgsql/bin/initdb -D /home/pgsql/pgsql_data
 9 The files belonging to this database system will be owned by user "postgres".
10 This user must also own the server process.
11 
12 The database cluster will be initialized with locale "zh_CN.UTF-8".
13 The default database encoding has accordingly been set to "UTF8".
14 initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
15 The default text search configuration will be set to "simple".
16 
17 Data page checksums are disabled.
18 
19 fixing permissions on existing directory /home/pgsql/pgsql_data ... ok
20 creating subdirectories ... ok
21 selecting default max_connections ... 100
22 selecting default shared_buffers ... 128MB
23 selecting default timezone ... Asia/Shanghai
24 selecting dynamic shared memory implementation ... posix
25 creating configuration files ... ok
26 running bootstrap script ... ok
27 performing post-bootstrap initialization ... ok
28 syncing data to disk ... ok
29 
30 WARNING: enabling "trust" authentication for local connections
31 You can change this by editing pg_hba.conf or using the option -A, or
32 --auth-local and --auth-host, the next time you run initdb.
33 
34 Success. You can now start the database server using:
35 
36     /home/pgsql/bin/pg_ctl -D /home/pgsql/pgsql_data -l logfile start

5.启动数据库

初始化数据库时,最后打印出启动数据库命令:   /home/pgsql/bin/pg_ctl -D /home/pgsql/pgsql_data -l logfile start

这里-l指定日志文件位置,这里直接输出在家目录下的logfile中,这个可以自己指定,这里-D指定数据目录,默认如果不加数据目录直接报错找不到,可以刚才说的环境变量配置文件中~/.bash_profile加入一行: export PGDATA=/home/pgsql/pgsql_data 然后source进去即可,这样pgsql会自动去找PGDATA环境变量值,找不到才会报错
启动之后此时执行: ps -ef | grep postgres 就可以看到相关进程如下:

 1 -bash-4.2$  /home/pgsql/bin/pg_ctl -D /home/pgsql/pgsql_data -l /home/pgsql/logfile start
 2 waiting for server to start.... done
 3 server started

# 查看postgres进程
4 -bash-4.2$ ps -ef | grep postgres 5 root 20480 4206 0 16:10 pts/0 00:00:00 su - postgres 6 postgres 20481 20480 0 16:10 pts/0 00:00:00 -bash 7 postgres 20544 1 0 16:16 pts/0 00:00:00 /home/pgsql/bin/postgres -D /home/pgsql/pgsql_data 8 postgres 20546 20544 0 16:16 ? 00:00:00 postgres: checkpointer process 9 postgres 20547 20544 0 16:16 ? 00:00:00 postgres: writer process 10 postgres 20548 20544 0 16:16 ? 00:00:00 postgres: wal writer process 11 postgres 20549 20544 0 16:16 ? 00:00:00 postgres: autovacuum launcher process 12 postgres 20550 20544 0 16:16 ? 00:00:00 postgres: stats collector process 13 postgres 20551 20544 0 16:16 ? 00:00:00 postgres: bgworker: logical replication launcher 14 postgres 20552 20481 0 16:16 pts/0 00:00:00 ps -ef 15 postgres 20553 20481 0 16:16 pts/0 00:00:00 grep --color=auto postgres

pgsql默认的端口号为5432

-bash-4.2$ netstat -tunlp | grep 5432
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      20544/postgres      
tcp6       0      0 ::1:5432                :::*                    LISTEN      20544/postgres  

6.开启远程访问

# 找到pgsql_data文件夹
[root@localhost pgsql_data]# pwd
/home/pgsql/pgsql_data


[root@localhost pgsql_data]# ls
base    pg_commit_ts  pg_hba.conf    pg_logical    pg_notify    pg_serial     pg_stat      pg_subtrans  pg_twophase  pg_wal   postgresql.auto.conf  postmaster.opts
global  pg_dynshmem   pg_ident.conf  pg_multixact  pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION   pg_xact  postgresql.conf       postmaster.pid

# vi修改postgresql.conf
[root@localhost pgsql_data]# vi postgresql.conf 

将 listen_addresses 前的#删掉,然后把localhost改成 *

重启即可。

/home/pgsql/bin/pg_ctl -D /home/pgsql/pgsql_data -l /home/pgsql/logfile restart
1 # 修改重启前 127.0.0.1:5432 
2 [root@localhost pgsql_data]# netstat -tunlp | grep 5432
3 tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      20544/postgres      
4 tcp6       0      0 ::1:5432                :::*                    LISTEN      20544/postgres      
5 
6 # 修改重启后 0.0.0.0:5432  
7 [root@localhost pgsql_data]# netstat -tunlp | grep 5432
8 tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      20595/postgres      
9 tcp6       0      0 :::5432                 :::*                    LISTEN      20595/postgres

7.连接数据库

1 [root@localhost bin]# /home/pgsql/bin/psql -h 127.0.0.1 -d postgres -U postgres -p 5432
2 psql.bin (10.10)
3 Type "help" for help.
4 
5 postgres=#

其中-h参数指定服务器地址,默认为127.0.0.1,默认不指定即可,-d指定连接之后选中的数据库,默认也是postgres,-U指定用户,默认是当前用户,-p 指定端口号,默认是"5432"

查看当前数据库列表

postgres=#  \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 template0 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

默认postgres,template0和1这3个库是不允许操作的,创建新的数据库执行: CREATE DATABASE test WITH OWNER=postgres ENCODING='UTF-8'; 这样就创建好了数据库test,然后可以执行命令 \c test 切换当前数据库为test,然后执行 \d 可以查看当前数据库下的所有表:

# 创建test数据库
postgres=# CREATE DATABASE test WITH OWNER=postgres ENCODING='UTF-8'; CREATE DATABASE
# 查看所有数据库列表 postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres test | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | (4 rows)
# 切换到test数据库 postgres=# \c test You are now connected to database "test" as user "postgres".

# 查看test数据库的所有表 test=# \d Did not find any relations.

创建一个表

# 创建一个表student
test=# CREATE TABLE student (
test(#   id integer NOT NULL,
test(#   name character(32),
test(#   number char(5),
test(#   CONSTRAINT student_pkey PRIMARY KEY (id)
test(# );
CREATE TABLE

# 查看student表结构
test=#  \d student
                 Table "public.student"
 Column |     Type      | Collation | Nullable | Default 
--------+---------------+-----------+----------+---------
 id     | integer       |           | not null | 
 name   | character(32) |           |          | 
 number | character(5)  |           |          | 
Indexes:
    "student_pkey" PRIMARY KEY, btree (id)

# 插入student表一条数据                                          
test=# INSERT INTO student (id,name,number) VALUES (1,'张三','1023');
INSERT 0 1

# 查看插入的数据
test=# SELECT * FROM student WHERE id=1;
 id |                name                | number 
----+------------------------------------+--------
  1 | 张三                               | 1023 
(1 row)

# \q退出pgsql
test=# \q
[root@localhost bin]# 
o
粉丝 0
博文 499
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
解析apk安装包的工具--apkutil

apkUtil是一个用来解析apk安装包的工具,通过它可以获取一个安装包的图标、程序名、所需android平台,权限等信息,并将其转换为java对象。该工具依赖于aapt工具,目前仅支持在windows平台上运...

貌似掉线
2012/11/18
5K
0
Pulse 安装失败

刚刚下载 安装!!按照instanlling.txt指示做 build.xml 生成一个war包 放到tomcat下运行结果就是报异常失败

jiguansheng
2010/04/12
737
2
基于ExMobi的外卖系统全端开发实践

如今O2O模式已经进入高速发展阶段,这种模式带给人们的方便快捷不仅催生了各种团购业务,更使订餐、外卖这种传统行业得到了新生。 这不禁让笔者也蠢蠢欲动,尤其是现在企业内部很多时候为了方...

nandy007
2015/12/14
1.6K
11
IPython notebook安装指导

1.环境准备 --- #在安装之前执行,依赖执行 # 依赖数据库,必须安装后才能使用 --- 如果安装后,执行命令 仍然出现下面的错误 "没有名字为的模块",一般来说需要重新编译python环境然后使用下...

胡佐治
2015/12/19
1.7K
0
[用事实说明两个凡是]一个由mysql事务隔离级别造成的问题分析

背景 最近要做一个批跑服务, 基本逻辑就是定时扫描数据库的记录, 有满足条件的就进行处理(一条记录代表一个任务,以下任务与记录含义相同). 要求支持多机部署批跑服务. 批跑支持多机部署实现方...

周翼翼
2015/11/24
3.8K
44

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 教程 - 文件上传下载

在日常的开发工作中,基本上每个项目都会有各种文件的上传和下载,大多数文件都是excel文件,操作excel的JavaAPI我用的是apache的POI进行操作的,POI我之后会专门讲到。此次我们不讲如何操作...

Butterfly-Tri
28分钟前
27
0
mysql 事务日志 

Redo Log 1.redo分为Physical Redo Log与Logical Redo Log 2.用于在 crash recovery时已提交没有刷盘的事务(记录时间点为缓冲中页面修改完成,但还没有刷新到硬盘,即事务提交之前),如异常...

易野
31分钟前
11
0
phpstorm 主题颜色

个人比较喜欢 复制文件保存为 red.icls <scheme name="1337" version="142" parent_scheme="Default"> <option name="FONT_SCALE" value="1.0" /> <metaInfo> <property name="c......

chenhongjiang
41分钟前
15
0
Hystrix核心原理和断路器源码解析

Hystrix运行原理 构造一个HystrixCommand或HystrixObservableCommand对象 执行命令。 检查是否已命中缓存,如果命中直接返回。 检查断路器开关是否打开,如果打开,直接熔断,走fallback逻辑...

xiaolyuh
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部