CentOS7下使用RPM安装PostgreSQL10
准备RPM包
postgresql10-10.4-1PGDG.rhel7.x86_64.rpm
postgresql10-contrib-10.4-1PGDG.rhel7.x86_64.rpm
postgresql10-libs-10.4-1PGDG.rhel7.x86_64.rpm
postgresql10-server-10.4-1PGDG.rhel7.x86_64.rpm
download.sh:
wget https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-10.7-1PGDG.rhel7.x86_64.rpm
wget https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-contrib-10.7-1PGDG.rhel7.x86_64.rpm
wget https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-libs-10.7-1PGDG.rhel7.x86_64.rpm
wget https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-server-10.7-1PGDG.rhel7.x86_64.rpm
安装
rpm -ivh *.rpm
初始化数据库
默认数据目录: /var/lib/pgsql/10/data/
/usr/pgsql-10/bin/postgresql-10-setup initdb
自定义目录
mkdir -p /opt/PostgreSQL/data
chmod 755 -R /opt/PostgreSQL/data
chown postgres:postgres -R /opt/PostgreSQL
su postgres
/usr/pgsql-10/bin/initdb --encoding=UTF-8 --local=zh_CN.UTF8 --username=postgres --pwprompt --pgdata=/opt/PostgreSQL/data
修改service环境变量
修改Environment:PGDATA的数据目录为/opt/PostgreSQL/data
vim /usr/lib/systemd/system/postgresql-10.service
systemctl daemon-reload
修改postgres用户的环境变量PGDATA
su postgres
vi ~/.bash_profile
启动
# 启动
systemctl start postgresql-10.service
# 开机启动
systemctl enable postgresql-10.service
# 关闭开机启动
systemctl disable postgresql-10.service
登录
su postgres
psql -U postgres
查看当前数据目录
show data_directory;
----------------------
/opt/PostgreSQL/data
(1 row)
修改密码
postgres=# \password
ALTER USER postgres WITH PASSWORD 'xxxxx';
数据库登录权限设置
vim $PGDATA/pg_hba.conf
权限相关配置:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
#host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
# IPv6 local connections:
#host all all ::1/128 trust
host all all ::0/0 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication all trust
#host replication all 127.0.0.1/32 trust
#host replication all ::1/128 trust
host replication repl slave trust
设置trust,本地可以使用psql -U postgres直接登录服务器
设置peer,本地可以使用 psql -h 127.0.0.1 -d postgres -U postgres
直接登录服务器
设置password,使用用户名密码登录
$PGDATA/postgresql.conf
数据库相关配置
listen_addresses = '*'
posrt = 5432
设置监听任意IP, 允许任意ip连接数据库
更多权限说明,见官方文档
新建superAdmin
createuser -P -s -e sonar
Enter password for new role: sonar
Enter it again: sonar
CREATE ROLE joe PASSWORD 'md5b5f5ba1a423792b526f799ae4eb3d59e' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
其它pgsql命令
要以 SSL 模式连接,可以像下面这样:
psql -U user -h host "dbname=db sslmode=require"
切换到另一个数据库
当连接上一个数据库后,还可以切换到另一个数据库上,甚至使用不同的用户进行切换。一旦切换连接,当前的连接将被关闭。
\c dbname username
如果省略 username
,将使用当前用户。
sjk66=# \c postgres
用户 postgres 的口令:
您现在已经连接到数据库 "postgres",用户 "postgres".
postgres=#
列出所有可用的数据库
要列出当前服务器上,所有的数据库,可以使用 \l
命令:
\l
列出所有可用的表
要列出当前数据库中,所有的表,可以使用 \dt
命令:
\dt
描述表
要获取表的描述,诸如字段、数据库类型等,可以使用以下命令:
\d table_name
列出所有可用的 schema
\dn
列出所有可用的函数
\df
列出所有视图
\du
再次执行上一个命令
\g
查看命令记录
\s
如果要将命令记录保存到一个文件中,可以:
\s 文件名
获取帮助
获取所有可用的 psql 命令:
\?
查看某个 PostgreSQL 语句的帮助信息:
\h 语句
比如:
\h CREATE TABLE
开启查询执行时间
要开启查询执行时间功能, 使用 \timing
命令:
\timing
再次执行该命令,会把该功能关闭。
使用编辑器编辑命令
\e
更常用的情景是,使用编辑器来编辑函数:
\ef [函数名]
切换输出选项
\a
:将字段对齐输出切换为不对齐输出
\H
:将使用 HTML 格式输出
退出 psql
\q
postgres=# \du
参考文章:
https://pg.sjk66.com/postgresql/psql.html
https://docs.postgresql.tw/reference/client-applications/createuser