一、环境准备
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常用命令
注意: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;
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'));
完结。