一、安装相关配置软件
[root@www1 ~]# yum install -y gcc.x86_64 glibc.x86_64 glibc-devel.x86_64 vim-enhanced.x86_64 gcc-java apr apr-devel openssl openssl-devel libgcc.x86_64 java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 perl-Module-Install.noarch
[root@www1 ~]# yum install -y readline-devel.x86_64
2、下载软件包
2.1.postgresql官网下载最新的源码:
https://ftp.postgresql.org/pub/source/
2.2.下载uuid ossp库
ftp.ossp.org/pkg/lib/uuid/
3、创建postgres用户
[root@www1 ~]# useradd postgres
4、上传源码包并解压编译安装
4.1.解压、编译、安装uuid
[root@www1 /]# tar -zxf uuid-1.6.2.tar.gz
[root@www1 /]# cd uuid-1.6.2
[root@www1 uuid-1.6.2]# ./configure
[root@www1 uuid-1.6.2]# make && make install
4.2.解压postgresql
[root@www1 /]# tar -zxf postgresql-12.0.tar.gz
[root@www1 /]# cd postgresql-12.0
5、配置prefix存储位置
[root@www1 postgresql-12.0]# ./configure --prefix=/home/postgres --enable-thread-safety --with-uuid=ossp --with-libs=/usr/local/lib --with-includes=/usr/local/include
6、编译&安装
[root@www1 postgresql-12.0]# make && make install
[root@www1 postgresql-12.0]# cd contrib/
[root@www1 contrib]# make && make install
7、配置uuid的软链接
[root@www1 contrib]# find / -name libuuid.so.16
/usr/local/lib/libuuid.so.16
/home/postgres/lib/libuuid.so.16
/uuid-1.6.2/.libs/libuuid.so.16
[root@www1 contrib]# ln -s /usr/local/lib/libuuid.so.16 /home/postgres/lib
8、设置用户权限
[root@www1 contrib]# chown -R postgres.postgres /home/postgres/
9、切换到创建的用户下配置环境变量
编辑用户目录下.bashrc文件 主要是设置PGDATA变量
[root@www1 /]# su - postgres
[postgres@www1 ~]$ vim .bashrc
PGHOME=/home/postgres
export PGHOME
PGDATA=$PGHOME/data
export PGDATA
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
export PATH
10、重新启用配置文件
[postgres@www1 ~]$ source .bashrc
11、初始化数据库
[postgres@www1 ~]$ initdb -D $PGDATA
12、启动数据库
[postgres@www1 ~]$ pg_ctl start -D $PGDATA
13、设置用户密码
[postgres@www1 ~]$ psql -U postgres
psql (12.0)
Type "help" for help.
postgres=# \password
Enter new password:
Enter it again:
postgres=# \q #使用\q命令退出控制台
14、设置监听端口
[postgres@www1 ~]$ vim $PGDATA/pg_hba.conf
85 # IPv4 local connections:
86 host all all 0.0.0.0/0 trust
[postgres@www1 ~]$ vim $PGDATA/postgresql.conf
# - Connection Settings -
listen_addresses = '*'
port = 5432
15、重启pg服务生效
[postgres@www1 ~]$ pg_ctl restart -D $PGDATA
16、登录数据库以及基本使用(需要指定的用户才能够进行数据库的管理)
[postgres@www1 ~]$ psql -U postgres -h 127.0.0.1 -p 5432
psql (12.0)
Type "help" for help.
postgres=#
-U指:用户 -d指:数据库 -h指:服务器 -p指:端口
17、若当前已经切换到指定的数据库用户直接使用psql登录
[postgres@www1 ~]$ psql
psql (12.0)
Type "help" for help
postgres=#
常用命令详情:
\h:查看SQL命令的解释 比如\h select
\?:查看psql命令列表
\l:列出所有数据库
\c [database_name]:连接其他数据库
\d:列出当前数据库的所有表格
\d [table_name]:列出某一张表格的结构
\du:列出所有用户
\e:打开文本编辑器
\conninfo:列出当前数据库和连接的信息
18、创建数据库
postgres=# create database demo;
CREATE DATABASE
19、查看创建的数据库
postgres-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
demo | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
20、使用创建的数据库
postgres-# \c demo
You are now connected to database "demo" as user "postgres"
21、删除数据库
[postgres@www1 ~]$ dropdb demo
[postgres@www1 ~]$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
22、创建测试表
postgres=# create table test_table (no int,name text);
CREATE TABLE
23、显示创建的测试表
postgres=# \dt
List of relations
Schema | Name | Type | Owner
--------+------------+-------+----------
public | test_table | table | postgres
(1 row)
24、插入数据到测试表
postgres=# insert into test_table (no,name) values (01,'CentOS');
INSERT 0 1
25、确认数据是否插入表
postgres=# select * from test_table;
no | name
----+--------
1 | CentOS
(1 row)
26、删除测试表
postgres=# drop table test_table;
DROP TABLE
postgres=# \dt
Did not find any relations.
ps:postgres用户切换回root用户不成功的解决方法
1.编辑/etc/sudoers文件
[root@www1 ~]# vim /etc/sudoers
2.添加提升权限的用户信息
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 postgres ALL=(ALL) ALL
3.切换回普通用户测试
[root@www1 ~]# su postgres
[postgres@www1 root]$ sudo su root
[sudo] postgres 的密码:
[root@www1 ~]#