Experience keeps a dear school, but fools will learn in no other.

postgreSQL 服务器版

Posted on By 阅读量次

  • content

安装PostgreSQL

1. 更新ubuntu包

sudo apt-get update

2. 安装postgreSQL

sudo apt install postgresql postgresql-contrib

以上命令成功运行后,postgresql已经正常安装,安装完成以后会自动启动postgresql的服务。可通过以下信息查看postgresql的信息

# 查看postgresql版本
sudo -u postgres psql -c "SELECT version();"
# 查看postgresql服务是否启动

#sudo systemctl enable postgresql.service
#sudo systemctl start postgresql.service
sudo systemctl status postgresql.service

3. 进行数据库配置

3.1 创建用户账号密码

在ubuntu上PostgreSQL数据库以后,会自动创建一个计算机用户postgres,以下是基于该账户进行操作的。

运行以下命令,使用postgres用户登录postgresql

进入交互界面

sudo -i -u postgres psql

进行postgresql的交互界面后,可以通过运行以下信息进行用户创建

-- 创建不带密码的账号-root
create role root;
-- 创建带密码的账号-root
create user root with 'temp123';
-- 显示所有用户,并查看是否创建成功
\du
-- 更改postgresql密码,如修改root账号的密码
alter user root with password 'temp123#';

3.2 创建数据库

-- 创建数据库(root)
create database root;
-- 删除数据库(root)
drop database test;
-- 查询所有数据库
\l
-- 切换数据库root
\c root

3.3 创建schema

-- 创建schema(ods),以下写法均可
 create schema ods;
 create schema if not exists ods;
-- 为某个用户(root2)创建market
 create schema market authorization roo2;
-- 查看当前数据库下的所有schema
select * from information_schema.schemata;
-- 删除schema(ods)
 drop schema if exists ods;

3.4 用户权限授权

创建完用户密码以后,可以用以下命令对用户进行权限授予

-- 给用户root赋予超级用户权限
alter user root with superuser;
-- 给用户root2赋予普通权限
alter user  root2 with privileges; 
-- 把数据库的所有权限给予用户root
grant all privileges on database test to root;
-- 把某schema下(ods)的所有表(test用户下)的所有权限给予用户root2
grant all on all tables in schema ods to root2;
-- 把某张表(test_table)的所有权限给予用户root2
grant all on test_table to root2;
-- 把某张表(test_table)的查询权限给予用户root2
grant select on table test_table to root2;
-- 撤销用户root2的某个数据库(test)权限;
revoke all on database test from root2;
-- 撤销用户root2某个schema(ods)下所有表的修改(update)权限;
revoke update on all tables in schema ods from root2;
-- 撤销用户root2某张表(test_table)的所有权限
revoke privileges on test_table from root2;
-- 将某张表(test_table)的所有者给root2
alter table test_table owner to root2;
-- 允许用户(root)登录
ALTER ROLE root WITH LOGIN;
-- 禁止用户(root)登录
ALTER ROLE root WITH NOLOGIN;

其他常用的一些授权如下:

-- 设置user1为user的子用户
grant user1 to user;
-- 为user1增加schema增加使用权,schema名称为ods
GRANT usage ON SCHEMA ods TO user1;

3.5 配置远程访问

由于postgresql在安装时会默认添加一个用户名为postgres的ubuntu系统用户,因此要先用其他账户删除postgres用户的密码,再配置属于自己的密码。

# 删除postgres用户的密码
sudo passwd -d postgres
# 设置postgres用户的密码
sudo -u postgres passwd

配置完密码后,编辑/etc/postgresql/12/main/postgresql.conf文件

sudo vim /etc/postgresql/12/main/postgresql.conf

在上述配置文件postgresql.conf中添加以下内容:

listen_addresses = '*' 
password_encryption = scram-sha-256

运行以下命令,编辑/etc/postgresql/12/main/pg_hba.conf文件

sudo vim /etc/postgresql/12/main/pg_hba.conf

在pg_hba.conf文件末尾追加以下内容: host all all 0.0.0.0/0 scram-sha-256

添加完成后,保存退出,然后重启postgresql 服务。

sudo systemctl start postgresql.service

3.6 远程连接

开放服务器的5432 端口:

sudo ufw allow 5432/tcp
sudo ufw reload

运用上述获得的信息,可以使用客户端或者命令行连接postgresql数据库。 psql -h 192.1.1.1 testdb -U root -W -p 5432

3.7 卸载

移除postgresql

sudo apt-get –purge remove postgresql*

移除配置信息

sudo rm -r /etc/postgresql/ sudo rm -r /etc/postgresql-common/ sudo rm -r /var/lib/postgresql/ sudo userdel -r postgres sudo groupdel postgres

参考

一文弄懂ubuntu安装postgresql以及开启远程访问
如何在ubuntu环境下安装postgresql并配置远程访问

本站总访问量:次