Linux环境中对Postgrel数据库的安装与配置
linux操作系统的环境是centos7;Postgrel数据库的版本是12.0,不同版本的下载渠道如下():可以看到压缩包是比较小的;下载之后,上传到你的linux环境中即可。
一、环境准备
linux操作系统的环境是centos7;
Postgrel数据库的版本是12.0,不同版本的下载渠道如下(PostgreSQL: File Browser):


可以看到压缩包是比较小的;下载之后,上传到你的linux环境中即可。
二、安装所需要的依赖
2.1准备依赖
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel
注意:这里因为cenos7已经不再继续维护,所以所需要的依赖可能会下载失败,这需要重新配置yum源,换成aliyun的镜像,应该能下载成功(这是我的重新编辑yum源的过程:centos7在使用yum源安装依赖时报错_centos7安装源出错-CSDN博客);

所需的依赖被下载安装成功;
2.2接着就是解压安装包
tar -zxvf postgresql-12.0.tar.gz
解压之后的文件夹内容如下:

三、配置安装
安装包解压之后的文件夹里面有configure的可执行文件,执行如下操作(后面的这个路径可以改成自己的风格,也可不改):
3.1自动配置
./configure --prefix=/opt/pgsql/postgresql

3.2编译
make

3.3编译安装
make install

3.4创建用户
#添加用户组
groupadd postgres
#添加用户
useradd -g postgres postgres

然后就是在你的安装目录下面创建一个存放数据文件的文件夹,我这里叫data
mkdir data

并给改数据文件夹授权
chown postgres:postgres data

3.5修改配置文件
接着是切换到home下进入到postgres下:
cd postgres/


对文件.bash_profile进行编辑:
vim .bash_profile
添加如下配置:
#PostGrel
export PGHOME=/opt/pgsql/postgresql
export PGDATA=/opt/pgsql/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin

保存退出;
接着执行如下命令,使其生效即可
source .bash_profile
然后切换到postgres用户下,初始化数据库
su - postgres
initdb

在初始化之后,我们的data文件夹里面就有了一些必要的文件,紧接着修改两个配置文件:

vim postgresql.conf
这个参数listen_addresses原来是被注释掉的,但是如果想从其他的机器来访问该服务器上的pg数据库,就需要将该参数启用,并将里面的localhost换为*

保存并退出;
vim pg_hba.conf
新增这一行才能使局域网来访问:
host all all 0.0.0.0/0 trust

保存并退出;
3.6配置自启动
在解压的安装包中,进入到如下文件夹中:



授权:
chmod a+x linux
![]()
然后将这里的linux复制到/etc/init.d中,并改名
cp linux /etc/init.d/postgresql

编辑该文件:
![]()
vim /etc/init.d/postgresql
修改这两个参数,换成自己的

修改后:

保存退出;
接着执行如下命令:
chkconfig --add postgresql
![]()
启动pg服务:
service postgresql start

查看服务进程:

四、简单使用
(1)直接进入到命令行下:

(2)也可以通过如下方式进入命令行:
psql -h <hostname or ip> -p <端口> [数据库名称] [用户名称]
4.1常用命令
注意:其实一项技能最好的辅助教材就是它的官方文档;(PostgreSQL 12.2 手册)
PG的官方文档环视不错的,相比较Oracle和MongoDB的官方文档,技能比较全且是比较准确的中文翻译;
注意:psql 的命令都是以斜杠 "\" 开头的。
(1) \l 查看所有数据库
(2)\d [ pattern ] 该命令将显示每个匹配关系(表、视图、索引、序列)的信息,可以加上 + 查看更多的信息,如 \d+
不加任何参数表示查看当前数据库的所有表。
\d tablename 后面跟一个表名,表示显示这个表的结构定义
\d indexname 也可以显示索引的信息,如 \d 索引名称
\d * 后面也可以跟通配符如 "*" 或 "?",\d x*
\d+ 将显示比 \d 更详细的信息,还会显示任何与表关系的注释,以及表中出现的 OID
\dt 只显示匹配的表
\di 只显示索引
\ds 只显示序列
\dv 只显示视图
\df 只显示函数
(3) \timing on或off 显示 SQL 已执行的时间,默认情况下是 off
(4)\dn 列出所有的 schema
(5)\du 或 \dg 列出所有的数据库用户和角色
(6)\db 显示所有的表空间,表空间其实是一个目录,放在这个表空间的表,就是把表的数据文件发到这个表空间下。
(7)\dp 或 \z 显示表的权限分配情况
(8)\encoding 指定客户端的字符编码,如 \encoding UTF8;
(9)\pset 设置输出的格式,\pset border 0 : 表示输出内容无边框。 border 1 :表示边框只在内部。border 2 :内外都有边框
(10)\x 把表中的每一行的每列数据都拆分为单行展示,与 MySQL 中的 "\G" 的功能类似。
(11)\echo 用于输出一行信息,通常用于在 .sql 文件中输出一些提示信息。
(12)\password 设置密码
(13)\conninfo 列出当前数据库连接的信息
(14)\dx 查看数据库中安装的扩展 或 select * from pg_extension;
全部的\用法:
General
\copyright show PostgreSQL usage and distribution terms
\crosstabview [COLUMNS] execute query and display results in crosstab
\errverbose show most recent error message at maximum verbosity
\g [FILE] or ; execute query (and send results to file or |pipe)
\gdesc describe result of query, without executing it
\gexec execute query, then execute each value in its result
\gset [PREFIX] execute query and store results in psql variables
\gx [FILE] as \g, but forces expanded output mode
\q quit psql
\watch [SEC] execute query every SEC secondsHelp
\? [commands] show help on backslash commands
\? options show help on psql command-line options
\? variables show help on special variables
\h [NAME] help on syntax of SQL commands, * for all commandsQuery Buffer
\e [FILE] [LINE] edit the query buffer (or file) with external editor
\ef [FUNCNAME [LINE]] edit function definition with external editor
\ev [VIEWNAME [LINE]] edit view definition with external editor
\p show the contents of the query buffer
\r reset (clear) the query buffer
\s [FILE] display history or save it to file
\w FILE write query buffer to fileInput/Output
\copy ... perform SQL COPY with data stream to the client host
\echo [STRING] write string to standard output
\i FILE execute commands from file
\ir FILE as \i, but relative to location of current script
\o [FILE] send all query results to file or |pipe
\qecho [STRING] write string to query output stream (see \o)Conditional
\if EXPR begin conditional block
\elif EXPR alternative within current conditional block
\else final alternative within current conditional block
\endif end conditional blockInformational
(options: S = show system objects, + = additional detail)
\d[S+] list tables, views, and sequences
\d[S+] NAME describe table, view, sequence, or index
\da[S] [PATTERN] list aggregates
\dA[+] [PATTERN] list access methods
\db[+] [PATTERN] list tablespaces
\dc[S+] [PATTERN] list conversions
\dC[+] [PATTERN] list casts
\dd[S] [PATTERN] show object descriptions not displayed elsewhere
\dD[S+] [PATTERN] list domains
\ddp [PATTERN] list default privileges
\dE[S+] [PATTERN] list foreign tables
\det[+] [PATTERN] list foreign tables
\des[+] [PATTERN] list foreign servers
\deu[+] [PATTERN] list user mappings
\dew[+] [PATTERN] list foreign-data wrappers
\df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functio
ns
\dF[+] [PATTERN] list text search configurations
\dFd[+] [PATTERN] list text search dictionaries
\dFp[+] [PATTERN] list text search parsers
\dFt[+] [PATTERN] list text search templates
\dg[S+] [PATTERN] list roles
\di[S+] [PATTERN] list indexes
\dl list large objects, same as \lo_list
\dL[S+] [PATTERN] list procedural languages
\dm[S+] [PATTERN] list materialized views
\dn[S+] [PATTERN] list schemas
\do[S] [PATTERN] list operators
\dO[S+] [PATTERN] list collations
\dp [PATTERN] list table, view, and sequence access privileges
\dP[itn+] [PATTERN] list [only index/table] partitioned relations [n=nested]
\drds [PATRN1 [PATRN2]] list per-database role settings
\dRp[+] [PATTERN] list replication publications
\dRs[+] [PATTERN] list replication subscriptions
\ds[S+] [PATTERN] list sequences
\dt[S+] [PATTERN] list tables
\dT[S+] [PATTERN] list data types
\du[S+] [PATTERN] list roles
\dv[S+] [PATTERN] list views
\dx[+] [PATTERN] list extensions
\dy [PATTERN] list event triggers
\l[+] [PATTERN] list databases
\sf[+] FUNCNAME show a function's definition
\sv[+] VIEWNAME show a view's definition
\z [PATTERN] same as \dpFormatting
\a toggle between unaligned and aligned output mode
\C [STRING] set table title, or unset if none
\f [STRING] show or set field separator for unaligned query output
\H toggle HTML output mode (currently off)
\pset [NAME [VALUE]] set table output option
(border|columns|csv_fieldsep|expanded|fieldsep|
fieldsep_zero|footer|format|linestyle|null|
numericlocale|pager|pager_min_lines|recordsep|
recordsep_zero|tableattr|title|tuples_only|
unicode_border_linestyle|unicode_column_linestyle|
unicode_header_linestyle)
\t [on|off] show only rows (currently off)
\T [STRING] set HTML <table> tag attributes, or unset if none
\x [on|off|auto] toggle expanded output (currently off)Connection
\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
connect to new database (currently "postgres")
\conninfo display information about current connection
\encoding [ENCODING] show or set client encoding
\password [USERNAME] securely change the password for a userOperating System
\cd [DIR] change the current working directory
\setenv NAME [VALUE] set or unset environment variable
\timing [on|off] toggle timing of commands (currently off)
\! [COMMAND] execute command in shell or start interactive shellVariables
\prompt [TEXT] NAME prompt user to set internal variable
\set [NAME [VALUE]] set internal variable, or list all if no parameters
\unset NAME unset (delete) internal variableLarge Objects
\lo_export LOBOID FILE
\lo_import FILE [COMMENT]
\lo_list
\lo_unlink LOBOID large object operations
4.2执行存储在外部文件中的 SQL 命令
(1)\i <文件名> 执行存储在外部文件中的 sql 语句
(2)当然也可以在 psql 命令行加 "-s <filename>" 来执行 SQL 脚本文件中的命令,如 psql -s test.sql
4.3psql 的使用技巧和注意事项
(1)在启动 psql 命令后中加 "-E" 参数,就可以把 psql 中各种以 "\" 开头的命令执行的实际 SQL 打印出来,如下 psql -E postgres,如果想关闭此功能,可以使用 "\set ECHO_HIDDEN on | off"
(2)自动提交方面的技巧
psql 中的事务是自动提交的,可以运行 begin; 然后执行 dml 语句,最后再执行 commit 或 rollback 语句。或 直接使用 psql 中的命令关闭自动提交的功能。 \set AUTOCOMMIT off
(3)查看数据库、表、索引大小
select pg_size_pretty(pg_table_size('test'));
select pg_size_pretty(pg_database_size('david'));
select pg_size_pretty(pg_indexes_size('test'));
完结。
更多推荐




所有评论(0)