我们使用Postgresql数据库的时候,默认都是用postgres用户进行数据操作。但是有时为了数据安全,我们会另外建一些账号给相关的工作人员使用。那么Postgresql数据库中如何新建登录用户呢?下面我给大家分享一下。
成都创新互联专注于企业全网整合营销推广、网站重做改版、汝州网站定制设计、自适应品牌网站建设、H5响应式网站、成都做商城网站、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为汝州等各大城市提供网站开发制作服务。
工具/材料
pgAdmin4
01
首先打开Postgresql的管理工具pgAdmin4,接着双击服务器名称,如下图所示
02
在弹出的Connect to Server界面中输入postgres用户的密码,然后点击OK按钮,如下图所示
03
进入到数据库以后右键单击"登录/组角色"选项,选择Create下面的Login/Group Role选项,如下图所示
04
接下来会弹出创建登录用户的界面,我们先给用户起一个名字,尽量是英文,如下图所示
05
然后切换到Definition页卡,给登录用户设置一个登录密码,如下图所示,注意Connection limit要设置为-1
06
接着切换到Privileges界面,这里需要给登录用户设置一下操作权限,大家可以根据自己的需要设置即可,如下图所示
07
接下来切换到Membership页卡,给登录用户设置一个角色,这里我直接把管理员的角色给它了,如下图所示
08
上述设置完毕以后回到数据库主界面,我们就可以看到"登录/组角色"下面就已经有我们新建的登录用户了,如下图所示
09
最后我们断开当前的连接,用新建的用户进行登录,如果登录正常的话则代表一切设置成功,如下图所示
Pg权限分为两部分,一部分是“系统权限”或者数据库用户的属性,可以授予role或user(两者区别在于login权限);一部分为数据库对象上的操作权限。对超级用户不做权限检查,其它走acl。对于数据库对象,开始只有所有者和超级用户可以做任何操作,其它走acl。在pg里,对acl模型做了简化,组和角色都是role,用户和角色的区别是角色没有login权限。
可以用下面的命令创建和删除角色,
CREATE ROLE name;
DROP ROLE name;
为了方便,也可以在 shell 命令上直接调用程序 createuser 和 dropuser,这些工具对相应命令提供了封装:
createuser name
dropuser name
数据库对象上的权限有:SELECT,INSERT, UPDATE,DELETE,RULE, REFERENCES,TRIGGER,CREATE, TEMPORARY,EXECUTE,和 USAGE等,具体见下面定义
typedefuint32AclMode; /* a bitmask of privilege bits */
#define ACL_INSERT (10) /* forrelations */
#defineACL_SELECT (11)
#defineACL_UPDATE (12)
#defineACL_DELETE (13)
#defineACL_TRUNCATE (14)
#defineACL_REFERENCES (15)
#defineACL_TRIGGER (16)
#defineACL_EXECUTE (17) /* for functions */
#defineACL_USAGE (18) /* for languages, namespaces, FDWs, and
* servers */
#defineACL_CREATE (19) /* for namespaces and databases */
#defineACL_CREATE_TEMP (110) /* for databases */
#defineACL_CONNECT (111) /* for databases */
#defineN_ACL_RIGHTS 12 /* 1plus the last 1
#defineACL_NO_RIGHTS 0
/*Currently, SELECT ... FOR UPDATE/FOR SHARE requires UPDATE privileges */
#defineACL_SELECT_FOR_UPDATE ACL_UPDATE
我们可以用特殊的名字 PUBLIC 把对象的权限赋予系统中的所有角色。 在权限声明的位置上写 ALL,表示把适用于该对象的所有权限都赋予目标角色。
beigang=# grantall on schema csm_ca to public;
GRANT
beigang=# revoke all on schema csm_ca frompublic;
REVOKE
beigang=#
每种对象的all权限定义如下:
/*
* Bitmasks defining "allrights" for each supported object type
*/
#defineACL_ALL_RIGHTS_COLUMN (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_REFERENCES)
#defineACL_ALL_RIGHTS_RELATION (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_DELETE|ACL_TRUNCATE|ACL_REFERENCES|ACL_TRIGGER)
#defineACL_ALL_RIGHTS_SEQUENCE (ACL_USAGE|ACL_SELECT|ACL_UPDATE)
#defineACL_ALL_RIGHTS_DATABASE (ACL_CREATE|ACL_CREATE_TEMP|ACL_CONNECT)
#define ACL_ALL_RIGHTS_FDW (ACL_USAGE)
#defineACL_ALL_RIGHTS_FOREIGN_SERVER (ACL_USAGE)
#defineACL_ALL_RIGHTS_FUNCTION (ACL_EXECUTE)
#defineACL_ALL_RIGHTS_LANGUAGE (ACL_USAGE)
#defineACL_ALL_RIGHTS_LARGEOBJECT (ACL_SELECT|ACL_UPDATE)
#defineACL_ALL_RIGHTS_NAMESPACE (ACL_USAGE|ACL_CREATE)
#defineACL_ALL_RIGHTS_TABLESPACE (ACL_CREATE)
用户的属性可参见下图:
视图 pg_roles提供访问数据库角色有关信息的接口。 它只是一个 pg_authid 表的公开可读部分的视图,把口令字段用空白填充了。
Table 42-39.pg_roles字段
名字
类型
引用
描述
rolname
name
角色名
rolsuper
bool
有超级用户权限的角色
rolcreaterole
bool
可以创建更多角色的角色
rolcreatedb
bool
可以创建数据库的角色
rolcatupdate
bool
可以直接更新系统表的角色。(除非这个字段为真,否则超级用户也不能干这个事情。)
rolcanlogin
bool
可以登录的角色,也就是说,这个角色可以给予初始化会话认证的标识符。
rolpassword
text
不是口令(总是 ********)
rolvaliduntil
timestamptz
口令失效日期(只用于口令认证);如果没有失效期,为 NULL
rolconfig
text[]
运行时配置变量的会话缺省
我们在使用Postgresql的时候,首先需要开启Postgresql服务。那么在Windows系统中有哪些方法开启Postgresql服务呢?下面我给大家分享一下。
工具/材料
任务管理器,服务面板,CMD命令行
服务面板开启
01
首先按Win+R组合键打开运行窗口,在输入框中输入services.msc命令,如下图所示
02
在出现的服务界面中我们找到postgresql的记录行,如下图所示,右键单击选择启动
03
当服务的状态显示为正在运行的时候则代表postgresql服务已经打开了,如下图所示
任务管理器开启
01
按住键盘上的Ctrl+Shift+ESC组合键,注意是同时按下,不是一个个按,如下图所示
02
在弹出的任务管理器窗口中切换到服务面板,找到postgresql服务,右键单击选择开始选项,如下图所示
命令行开启
01
找到所有程序下面的Windows系统,然后点击命令提示符,如下图所示
02
另外也可以直接打开运行界面输入CMD命令打开命令提示符界面,如下图所示
03
在命令提示符中通过net start命令来开启postgresql服务,如下图所示,注意服务名一定要写正确
操作系统: CentOS Linux release 7.5.1804 (Core)
sudo rpm -i
sudo yum install pgadmin4
/usr/pgadmin4/bin/setup-web.sh
输入登录的邮箱账号及登录密码。
按照安装提示完成配置即可。
然后开放端口80
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
通过ip直接访问即可