postgresql安装配置和基本操作
postgresql安装配置和基本操作
1.安装
linux上安装 最好是centos7.6或者7.8,
参考官网
PGSQL的官方地址:https://www.postgresql.org/
PGSQL的国内社区:http://www.postgres.cn/v2/home
点击download
https://www.postgresql.org/download/linux/redhat/
# 下载PGSQL的rpm包
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装PGSQL12的软件程序,需要下载,需要等一会,一般不会失败,即便失败,他也会重新帮你找镜像
sudo yum install -y postgresql12-server
# 数据库初始化
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
# 设置开启启动项,并设置为开启自行启动
sudo systemctl enable postgresql-12
# 启动PGSQL
sudo systemctl start postgresql-12
PostgreSQL不推荐使用root管理,在安装成功postgreSQL后,他默认会给你创建一个用户:postgres,
密码随机。。。。。
玩PGSQL前,先切换到postgres
#查服务状态
systemctl status postgresql-12.service
#切换用户
su postgres
# 连接plsql(默认localhost:5432 用户为postgres) 进入客户端工具
psql
# 查看有哪些库,如果是新安装的,有三个库,一个是postgres,template0,template1
\l
2.配置
主要搞两个配置 远程连接,日志,相关配置文件所在目录
/var/lib/pgsql/12/data
图可以看到,postgreSQL的核心文件,都属于postgres用户,操作的时候,尽可能的别用root用户,容易玩出坑,尽可能先切换到postgres用户去玩.
远程连接配置
默认不支持远程连接,和mysql基本一样
配置远程连接需要修改配置文件 pg_hba.conf
# 第一块
local:代表本地连接,host代表可以指定连接的ADDRESS
# 第二块
database编写数据库名,如果写all,代表所有库都可以连接
# 第三块
user编写连接的用户,可以写all,代表所有用户
# 第四块
address代表那些IP地址可以连接
# 第五块
method加密方式,这块不用过多关注,直接md5
# 直接来个痛快的配置吗,允许任意地址的全部用户连接所有数据库
host all all 0.0.0.0/0 md5
为了实现远程连接,除了用户级别的这种配置,还要针对服务级别修改一个配置
服务级别的配置在postgresql.conf
发现默认情况下,PGSQL只允许localhost连接,直接配置为*即可解决问题
重启生效
sudo systemctl restart postgresql-12
最后使用远程navicate根据来测试即可
日志配置
在postgresql.conf文件
postgreSQL默认情况下,只保存7天的日志,循环覆盖。
# 代表日志是开启的。
logging_collector = on
# 日志存放的路径,默认放到当前目录下的log里
log_directory = 'log'
# 日志的文件名,默认是postgresql为前缀,星期作为后缀
log_filename = 'postgresql-%a.log'
# 默认一周过后,日志文件会被覆盖
log_truncate_on_rotation = on
# 一天一个日志文件
log_rotation_age = 1d
# 一个日志文件,没有大小限制
log_rotation_size = 0
3.基本操作
pgsql逻辑结构图
pgsql服务--》数据库--》对象(表 视图 所有 触发器……)
基本命令
\help:查看所有命令
\help create user :查看具体命令的用法
进入客户端(默认用户是postgres 密码是随机的):psql
退出:\q
切换数据库:\
用户操作
命令别去记 灵活使用\help
# 创建用户(超级管理员)
create user root with SUPERUSER PASSWORD 'root';
#使用新用户连接 发现需要创建一个和用户名字相同的数据库 否则不让登陆
psql -h 127.0.0.1 -p 5432 -U root -W
# 切换连接的数据库
\c root
#查看所有用户信息
\du
#修改用户的密码
alter user postgres with PASSWORD 'postgres';
权限操作
权限操作前,要先知道PGSQL的逻辑结构
pgsql服务--》数据库--》对象(表 视图 所有 触发器……)
可以看到PGSQL一个数据库中有多个schema,在每个schema下都有自己的相应的库表信息,权限粒度会比MySQL更细一些。(一般我们只是在数据库级别做权限控制 不会到对象那么细)
在PGSQL中,权限的管理分为很多多层
server、cluster、tablespace级别:这个级别一般是基于pg_hba.conf去配置
database级别:通过命令级别操作,grant
namespace、schema级别:玩的不多……不去多了解这个~~
对象级别:通过grant命令去设置
后面如果需要对database或者是对象级别做权限控制,直接基于grant命令去操作即可
\help grant