资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

包含postgresql用户的词条

如何查看postgresql数据库用户

postgres=#

成都创新互联公司专注于企业全网整合营销推广、网站重做改版、肥乡网站定制设计、自适应品牌网站建设、H5高端网站建设商城开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为肥乡等各大城市提供网站开发制作服务。

\du

List

of

roles

Role

name

|e5a48de588b6e799bee5baa6e997aee7ad9431333363366263

Attributes

|

Member

of

-----------+------------------------------------------------+-----------

mqis

|

Password

valid

until

infinity

|

{}

mqis_app

|

Password

valid

until

infinity

|

{}

postgres

|

Superuser,

Create

role,

Create

DB,

Replication

|

{}

postgres=#

SELECT

u.usename

AS

"User

name",

u.usesysid

AS

"User

ID",

CASE

WHEN

u.usesuper

AND

u.usecreatedb

THEN

CAST('superuser,

create

database'

AS

pg_catalog.text)

WHEN

u.usesuper

THEN

CAST('superuser'

AS

pg_catalog.text)

WHEN

u.usecreatedb

THEN

CAST('create

database'

AS

pg_catalog.text)

ELSE

CAST(''

AS

pg_catalog.text)

END

AS

"Attributes"

FROM

pg_catalog.pg_user

u

ORDER

BY

1;

-------------------------------------------------

User

name

|

User

ID

|

Attributes

-----------+---------+-------------------

mqis

|

16393

|

mqis_app

|

16397

|

postgres

|

10

|

superuser,

create+

|

|

database

(3

rows)

postgres=#

如何重置postgresql用户密码

相信如果你在重新安装或者升级Postgresql数据库的时候都需要你输入在第一次安装时候的密码,这个密码往往我们都会忘记,那么万一忘记了该咋办?难道真就不能安装了?答案当然是否定的。在项目中,本人就遇到过这样的情况,一番摸索过后发现终于发现其中的奥秘,首先,Postgresql 安装时,会往用户组中添加一个postgresql用户,而这个用户就是阻止你密码验证不能通过的罪魁祸首,好吧,将其删除,再试试呢,成功了。别急,有些时候,你在安装的时候还会报一些错误,我同事就遇到此类情况,最后发现Postgresql 还会在当前用户下记录一下信息,比如管理工具的默认用户名和密码等信息,密码是不加密的哦!!以我的Win 7 32bit Enterprise version 为例,我的用户为:Abc_Zhou,则在C:\Users\abc_zhou\AppData\Roaming folder下看到有postgresql,删掉吧,好了,至此,你将能够完全安装成功了。

有时候在不知道密码的情况下如何能够使用数据库呢?当然前提是你知道用户名。这个是比较纠结的问题,用以上方法重装?显然不行,谁能保证我的数据呢。别急,咱们也有办法,首先,来到数据库的安装目录data文件夹下面,我的是9.0.4 version,路径为(PostgreSQL\9.0\data),然后找到pg_hba.conf文件,在最下放有一下几句话:

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# IPv4 local connections:

host all all 127.0.0.1/32 md5

# IPv6 local connections:

host all all ::1/128 md5

好吧,将所有的md5修改称为trust,重启数据库服务,再去界面登录看看,记住不要输入密码哦。当你登录成功了之后难道想改个密码还不容易?

Alter user 'postgres' with password '123456';

至此,重新把method改回md5吧,重启服务,使用刚刚修改的密码登录,果断成功了。

好了,到此基本上完成我们的全部需求了,可是,有时候我们又不想改掉原本的密码,或许系统中还会有其他软件使用此用户呢。好,那还不简单,重新创建一个用户不就得了,不错好方法。但是我要告诉你一个更绝的办法,就是如果有人在管理工具中登录并保存过密码,那你就可以通过以下文件直接找出密码:C:\AllUsers\abc_zhou\AppData\postgresql 中的pgpass.conf 文件(机器环境同上),记事本打开就ok了,是不是可以看到密码了,就是这么简单。

PostgreSQL的用户,角色跟权限管理怎么解决

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数据库如何新建登录用户

我们使用Postgresql数据库的时候,默认都是用postgres用户进行数据操作。但是有时为了数据安全,我们会另外建一些账号给相关的工作人员使用。那么Postgresql数据库中如何新建登录用户呢?下面我给大家分享一下。

工具/材料

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

最后我们断开当前的连接,用新建的用户进行登录,如果登录正常的话则代表一切设置成功,如下图所示


文章名称:包含postgresql用户的词条
文章起源:http://cdkjz.cn/article/dsdpooh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220