做网站开发学什么内容,推广网站利润,太原市网站建设,wordpress+游戏网站开头还是介绍一下群#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题#xff0c;有需求都可以加群群内有各大数据库行业大咖#xff0c;CTO#xff0c;可以解决你的问题。加群请联系 liuaustin3 #xff0c;在新加的朋友会分到2群#xff08;共… 开头还是介绍一下群如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题有需求都可以加群群内有各大数据库行业大咖CTO可以解决你的问题。加群请联系 liuaustin3 在新加的朋友会分到2群共1200人左右 1 2 3新人会进入3群 开发人员很少关注于数据库系统的权限而POSTGRESQL 相对于MYSQL来说他的权限是复杂的尤其在一些规范的企业对于权限的要求很高而随时掌握账号对于数据库OBJECTS的权限的状态,在很多项目中是乙方需要知道该怎么做的。 我们从上到下一一给大家进行演示你的用户组需要针对PG中不同的数据库掌握权限那么那些账号有那些数据库的权限需要进行一个判断。 我们创建一个账号关于这个账号在什么权限都没有从下面的函数可以判断什么都没有的权限的账号可以创建临时表,如果减少用户的名的传参则为当前的账号是否有对于数据库权限的验证。 postgres# select has_database_privilege(test,postgres,temp);has_database_privilege
------------------------t
(1 row)postgres#
postgres# select has_database_privilege(test,postgres,temporary);has_database_privilege
------------------------t
(1 row)postgres#
postgres# select has_database_privilege(test,postgres,create);has_database_privilege
------------------------f
(1 row) 这里我们继续针对POSTGRESQL 中的某个SCHEMA 进行判断, 一个具有OWNER test_schema的账号具有创建和usageschema的权限 dvdrental#
dvdrental# select has_schema_privilege(test,test_schema,create);has_schema_privilege
----------------------t
(1 row)dvdrental# select has_schema_privilege(test,test_schema,usage);has_schema_privilege
----------------------t
(1 row) a 针对表的操作进行权限的判断 dvdrental#
dvdrental# select has_table_privilege(test,TEST_TABLE,select);has_table_privilege
---------------------f
(1 row)ge(test,TEST_TABLdvdrental# select has_table_privilege(test,TEST_TABLE,insert);has_table_privilege
---------------------f
(1 row)dvdrental# select has_table_privilege(test,TEST_TABLE,update);has_table_privilege
---------------------f
(1 row)dvdrental# select has_table_privilege(test,TEST_TABLE,delete);has_table_privilege
---------------------f
(1 row)dvdrental# select has_table_privilege(test,TEST_TABLE,references);has_table_privilege
---------------------f
(1 row) 我们在创建了一个新的schema 并且在新的schema中创建的了表但是test 用户对于这个数据库下的schema 是owner那么我们创建的这个表test用户是否有权限呢。 dvdrental# select has_table_privilege(test,test_schema.TEST_TABLE,select);has_table_privilege
---------------------f
(1 row) 我们可以看到test账号对于test_schema 下的表 TEST_TABLE 是没有权限的我们来验证一遍通过 test 登陆到系统中来访问这个表。 在赋予权限后我们再次通过验证的函数来进行判断的确赋予权限了。 dvdrental# select has_table_privilege(test,test_schema.TEST_TABLE,select);has_table_privilege
---------------------t
(1 row)dvdrental# select has_table_privilege(test,test_schema.TEST_TABLE,update);has_table_privilege
---------------------t
(1 row)dvdrental# select has_table_privilege(test,test_schema.TEST_TABLE,insert);has_table_privilege
---------------------t
(1 row)dvdrental# select has_table_privilege(test,test_schema.TEST_TABLE,references);has_table_privilege
---------------------f
(1 row) 那么如果针对表中的权限是需要判定多种的权限如何进行操作 select has_table_privilege(test,test_schema.TEST_TABLE,insert,select,update,update with grant option); 最后关于关于开发经常提到的关于函数和存储过程方面的权限问题我们创建一个函数一个存储过程。 下面的我们通过has_function_privilege 函数来对test 用户进行执行此函数权限的确认得到的结果是YES, test 账号对于这个函数是有相关的执行权限的。 同样的我们创建一个存储过程我们还是使用上面的函数来判断 SELECT has_function_privilege(test, public.insert_data(varchar), execute); 同样使用判断函数权限的方式用在判断存储过程中也是一样的有效。 在postgresql 的使用中尤其乙方在服务甲方的情况下很多初级的问题尤其权限都需要介入和解决以及判断那么自动化的方式来进行判断对于乙方是非常重要的。 下面的脚本抛砖引玉通过相关的函数将schema下的表的权限进行全面的打印。 SELECT tablename,usename,HAS_TABLE_PRIVILEGE(users.usename, tablename, select) AS sel,HAS_TABLE_PRIVILEGE(users.usename, tablename, insert) AS ins,HAS_TABLE_PRIVILEGE(users.usename, tablename, update) AS upd,HAS_TABLE_PRIVILEGE(users.usename, tablename, delete) AS del
FROM
(SELECT * from pg_tables
WHERE schemaname public) as tables
,(SELECT * FROM pg_user) AS users;