Updated on 三月 4, 2019
PostgreSQL权限相关学习笔记
PG数据安全我觉得可以从两方面管理:
一是连接配置方面,可以修改pg_hba.conf,来限制某个数据库、某个用户可以访问的host、port等;
二是从数据库权限方面,来限制访问某个schema数据。
role与user:对于PostgreSQL来说,这是完全相同的两个对象。
区别是role不具有缺省的login权限。
#切换到postgres su - postgres #执行psql psql #创建用户 CREATE USER tsbe ENCRYPTED PASSWORD 'tsbepw'; #创建数据库 CREATE DATABASE tsbe OWNER tsbe; #------------ #若报Must Be Member Of Role “Xxx” GRANT xxRole TO currentLoginRole; #------------ #将数据库的所有权限都赋予user(这步好像可以不执行) GRANT ALL PRIVILEGES ON DATABASE tsbe TO tsbe; \q exit #创建Linux用户,与新建的用户同名 sudo adduser tsbe sudo passwd tsbe #以tsbe的身份连接数据库tsbe su - tsbe psql -d tsbe #------------ #若报Could Not Connect To Server: No Such File Or Directory Is The Server Running Locally And Accepting Connections On Unix Domain Socket “/Var/Run/Postgresql/.S.PGSQL.5432”? #发修改环境变量增加PGPORT cd ~/ touch .bash_profile vi .bash_profile #增加 PGPORT=xxx export PGPORT #保存后,需继续执行如下命令 source .bash_profile #这样就增加了PGPORT变量,可以echo查看 echo $PGPORT #------------
DB实例与schema: 模式是数据库实例的逻辑分割。
官方建议是这样的:在管理员创建一个具体数据库后,应该为所有可以连接到该数据库的用户分别创建一个与用户名相同的模式,然后,将search_path设置为”$user”(即缺省模式为与用户名相同的模式),这样,任何当某个用户连接上来后,会默认将查找或者定义的对象都定位到与之同名的模式中。这是一个好的设计架构。
#创建一个tsbe,并且设置所属用户为tsbe create schema tsbe authorization tsbe;
#设置允许访问ip vi /var/lib/pgsql/10/data/pg_hba.conf host tsbe tsbe 0.0.0.0/0 md5 #重启数据库 systemctl restart postgresql-10.service
参考:
https://www.cnblogs.com/xxfcz/p/6483892.html