0 测试环境准备
配置软件 | 版本 |
---|---|
CentOS | 7.0 Release (或以上) |
PostgreSQL | 12.x |
1 PostgreSQL 安装
1.1 导入yum源
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
1.2 安装PostgreSQL服务
sudo yum install -y postgresql12 postgresql12-server
安装PostgreSQL 11 就是 yum install postgresql12 postgresql12-server 安装PostgreSQL 9.5 就是 yum install postgresql95 postgresql95-server 以此类推
1.3 数据库初始化
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database … OK
1.4 启动 PostgreSQL 服务
sudo systemctl start postgresql-``12
启动PostgreSQL服务
sudo systemctl enable postgresql-``12
设置PosgreSQL服务为开机启动
Tip: 若配置9.x版本的数据库服务名就是 postgresql-9x
2 修改 postgres(默认超级用户)账号密码
PostgreSQL 安装成功之后,会默认创建一个名为postgres的Linux用户,初始化数据库后,会有名为postgres的数据库,来存储数据库的基础信息,例如用户信息等等,相当于MySQL中默认的名为mysql数据库。
postgres数据库中会初始化一名超级用户 ``postgres``
,为了方便我们使用postgres账号进行管理,我们可以修改该账号的密码。
2.1 进入PostgreSQL命令行状态
通过su命令切换linux用户为postgres会自动进入命令行
su - postgres
2.2 启动PostgreSQL SQL Shell
psql
2.3 修改账号密码
ALTER USER postgres WITH PASSWORD '新密码';
将「新密码」修改为相关字符,如 xyz123 ;
3 为数据库配置远程访问
3.1 开发端口(系统已开启防火墙功能)
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
系统防火墙相关管理命令
· 启动/禁用自启/禁用/开机自启:
systemctl start/disable/stop/enable firewalld
· 重启:firewall-cmd --reload
· 查看状态:systemctl status firewalld
orfirewall-cmd --state
参考:[https://blog.csdn.net/u011846257/article/details/54707864](https://blog.csdn.net/u011846257/article/details/54707864)
3.2 修改IP绑定
- 修改配置文件
vi /var/lib/pgsql/12/data/postgresql.conf
将监听地址修改为 *
默认listen_addresses配置是注释掉的,所以可以直接在配置文件开头加入该行
listen_addresses``=``'*'
3.3 允许所有IP访问
3.4 重启PostgreSQL服务
sudo systemctl restart postgresql-12
配置完成后即可用数据库管理客户端进行访问连接;
4 PostgreSQL Shell常用语法
首先启动SQL Shell:
su - postgres
psql
4.1 数据库相关语法
#创建数据库
CREATE DATABASE mydb;
#查看所有数据库
\l
#切换当前数据库
\c mydb
#创建表
CREATE TABLE test(id int,body varchar(100));
#查看当前数据库下所有表
\d
4.2 用户与访问权限语法
#新建用户test(密码也为test)
CREATE USER test WITH PASSWORD 'test';
#赋予指定账户指定数据库所有权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO test;
#移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb TO test
权限代码:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE、USAGE 等
参考:[https://www.runoob.com/postgresql/postgresql-privileges.html](https://www.runoob.com/postgresql/postgresql-privileges.html)
5 其它
本文引自:Ken的杂谈
:::info 备注:以上操作,均经验证,所涉及代码可直接引用。 :::