PG数据库安装+维护命令

一、postgresql-12 源码安装方式:

1 、下载

官网提供了源码和预安装的版本。 源码需要编译安装,解决依赖包等问题,而预安装的版本要简单很多。只需下载解压, 初始化数据库即可。
本例以源码安装为例:请至官网 下载源码。
本例中安装的是PG11. 在 https://www.postgresql.org/ftp/source/v12.0/ 中选择postgresql-12.0.tar.bz2
请根据需要先择自己需要的版本。
预安装版本,请至官网下载。

2、准备环境

此步骤以root用户执行。 将postgresql的安装包放到/opt 路径。
创建组和用户

groupadd postgres
useradd -g postgres -G postgres   postgres
passwd postgres

安装依赖包

yum install -y bzip2 readline-devel zlib-devel

将安装包放在/opt 路径中并解压

cd /opt/
tar -zxvf postgresql-11.2.tar.gz

3 编译安装

此步骤以postgres 用户操作:

cd /opt/postgresql-11.2
./configure --prefix=/home/postgres/dbhome
make && make install

安装后,可执行文件,库文件等都会安装在/home/postgres/dbhome 中。

[[postgres@atguigu06 dbhome]$ ls /home/postgres/dbhome
bin  include  lib  share

4 设置环境变量

将以下两行添加至postgres 用户的环境变量文件 .bash_profile 并生效。

vim .bash_profile
export LD_LBRARY_PATH=$HOME/dbhome/lib:$LD_LIBRARY_PATH
export PATH=$HOME/dbhome/bin:$PATH

环境变量文件生效方法:

source .bash_profile

5 初始化数据库

此步骤以postgres用户执行。
创建数据存放路径

mkdir $HOME/data

postgres 数据库的配置文件,数据文件等都会存放在这个路径下。
初始化数据库

initdb  -E utf8 -D $HOME/data/

示例如下:
  The files belonging to this database system will be owned by user "postgre".
This user must also own the server process.

The database cluster will be initialized with locale "C".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /home/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... America/New_York
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    pg_ctl -D /home/postgresql/data/ -l logfile start

初始化完成后,在最后一行会提示我们启动数据库的方法. 此时我们来查看一下 $HOME/data路径 的内容:

[postgres@atguigu06 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
global  pg_dynshmem   pg_ident.conf  pg_multixact  pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION   pg_xact  postgresql.conf

这些路径分别有什么用途,以后再了解。

6 配置参数文件

我们主要是配置postgresql.conf 和 pg_hba.conf 这两个。

postgresql.conf 针对实例的配置
pg_hba.conf 针对数据库访问的控制

6.1 postgresql.conf配置:

找到 #port 和 #listener_address 这两个参数。这两个参数是相邻的:

#listen_addresses = 'localhost'               # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5432                             # (change requires restart)
max_connections = 100                  # (change requires restart)

将两行行首的 # 删除,将 localhost 改为当前服务器的IP 。 默认的监听端口是5432,可以自行指定另外一个端口号,不建议使用默认端口号 。 顺便再修改一下 max_connections 吧,最大的连接数, 100有点少,特别是业务系统。 可以调整成1000,或者更高。

6.2 pg_hba.conf

将以下一行添加至文末。

host    all             all             10.10.100.0/24          trust
其意义是允许 10.10.100网段的IP 连接此服务器上的PG. 如果想允许所有IP 都可以连接此服务器 则可以配置成如下:

host    all             all             0.0.0.0/0          trust

7 数据库启动与关闭

7.1 手动

我们手动启动与关闭数据库是执行pg_ctl命令。在执行时,需要指定 数据路径,格式如下:

pg_ctl -D <数据存放路径> [ stop | start ]
示例如下:

[postgres@atguigu06 data]$ pg_ctl -D /home/postgres/data/ -l logfile start
waiting for server to start.... done
server started
[postgres@atguigu06 data]$ pg_ctl -D $HOME/data stop
waiting for server to shut down.... done
server stopped

7.2 开机自动启动

此步骤需要root用户操作。 postgresql 的安装包中提供了数据库启动与关闭的脚本,可以帮助我们简化操作,也可以 用作开机启动的脚本和service/systemctl 控制服务的脚本。 脚本位于:

/postgresql-12.0/contrib/start-scripts/
本示例中是:
/opt/postgresql-11.2/contrib/start-scripts/
设置开机启动:
cp/opt/postgresql-11.2/contrib/start-scripts/linux /etc/init.d/postgres
chkconfig --add postgres
chmod 755 /etc/init.d/postgres

调整配置,主要是脚本中三个变量的值:

prefix="/home/postgres/dbhome"
PGDATA="/home/postgres/data"
PGUSER=postgres
prefix 是软件的安装路径
PGDATA 是数据存放路径
PGUSER 是启动postgresql服务的用户

以后可以开机启动和通过service 命令控制启动和关闭了:

[root@atguigu06 init.d]# service postgresql start
Starting PostgreSQL: ok
[root@atguigu06 init.d]# service postgresql stop
Stopping PostgreSQL: ok

8 postgres数据库显示项优化

备注:为了方便运维,还需要进行登录显示的优化,优化如下:

[postgres@atguigu06 ~]$ cat  .psqlrc
\set PROMPT1 '%`date +%H:%M:%S` (%n@%M:%>)%/%R%#%x'
\set PROMPT2 '%M %n@%/%R%# '
\timing on
登录:
[postgres@atguigu06 ~]$ psql
Timing is on.
psql (11.2)
Type "help" for help.

09:15:27 (postgres@[local]:5432)postgres=#

二、卸载方法:

(1)源码方式安装的话:make uninstall。如果你的源代码目录已经删了,也可以重新展开、配置,然后make uninstall。
(2)rpm方式安装的话:rpm -e也就可以了。
(3)yum方式安装的话:yum remove postgresql*也就可以了。

三、修改postgres管理员用户密码和postgres用户密码

1、修改PostgreSQL数据库默认用户postgres的密码

PostgreSQL数据库创建一个postgres用户作为数据库的管理员,密码随机,所以需要修改密码,方式如下:

步骤一:登录PostgreSQL

[postgres@atguigu06 ~]$ psql
Timing is on.
psql (11.2)
Type "help" for help.

09:10:40 (postgres@[local]:5432)postgres=#

步骤二:修改登录PostgreSQL密码

 ALTER USER postgres WITH PASSWORD 'postgres';

注:
密码postgres要用引号引起来
命令最后有分号
步骤三:退出PostgreSQL客户端

2. 修改linux系统postgres用户的密码

PostgreSQL会创建一个默认的linux用户postgres,修改该用户密码的方法如下:
步骤一:删除用户postgres的密码

sudo passwd -d postgres

步骤二:设置用户postgres的密码

sudo -u postgres passwd
系统提示输入新的密码
1 Enter new UNIX password:
2 Retype new UNIX password:
3 passwd: password updated successfully

四、维护管理命令:

\l 查看系统中现存的数据库
\c 切换库,如template1=# \c sales 从template1转到sales库
\d 查看表和sequence
\d table_name,查看表结构,如:\d public.t_ip或\d t_ip,虽然\d看不到其他schema的表,但依然可以描述表\d wechat.stat_basic_hour
\dt 只查看表
\di 查看索引
\du 查看有哪些用户
\dn 查看schema
\dp 显示表的权限分配情况
\q 退出客户端程序psql
SET SEARCH_PATH TO public,wechat; 设置搜索路径(不区分大小写,下同) 设置后\d能列出指定的schema的表和sequence
SHOW SEARCH_PATH; 查看搜索模式
SELECT USER; 查看当前是什么用户登录的
postgres=# \conninfo 查看连接信息(什么用户连的)
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
postgres=# 的提示符postgres表示当前数据库是postgres

你可能感兴趣的:(PG数据库安装+维护命令)