如何更改PostgreSQL用户的密码?
当前回答
要使用Linux命令行更改密码,请使用:
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
其他回答
将用户“postgres”的密码更改为“postgress”:
# ALTER USER postgres WITH ENCRYPTED PASSWORD '<NEW-PASSWORD>';
要更改PostgreSQL用户的密码,请执行以下步骤:
登录psql控制台:sudo-u postgres psql然后在psql控制台中,更改密码并退出:postgres=#\密码postgres输入新密码:<新密码>postgres=#\q
或者使用查询:
ALTER USER postgres PASSWORD '<new-password>';
或在一行中
sudo -u postgres psql -c "ALTER USER postgres PASSWORD '<new-password>';"
注:
如果这不起作用,请通过编辑/etc/postgresql/9.1/main/pg_hba.conf重新配置身份验证(路径将不同)并更改:
local all all peer # change this to md5
to
local all all md5 # like this
然后重新启动服务器:
sudo service postgresql restart
通常,只需使用pgAdmin UI执行与数据库相关的活动。
如果相反,您更专注于为本地开发、CI等自动化数据库设置。
例如,可以使用这样的简单组合。
(a) 通过Jenkins创建一个虚拟超级用户,命令如下:
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
这将在PostgreSQL数据库中创建一个名为experience001的超级用户。
(b) 通过运行NON Interactive SQL命令为该用户提供一些密码。
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
PostgreSQL可能是命令行(非交互式)工具的最佳数据库。创建用户、运行SQL、备份数据库等。
一般来说,PostgreSQL都是非常基础的,将其集成到开发设置脚本或自动化CI配置中总体来说非常简单。
如果您在Windows上。
打开pg_hba.conf文件并从md5更改为对等。
打开cmd并键入psql-postgres-postgres。
然后键入\password以提示输入新密码。
有关更多信息和详细步骤,请参阅本中帖。
这在语法上类似于其他答案,但应该知道,您也可以传递密码的MD5哈希值,因此您不会发送纯文本密码。
以下是以明文形式更改用户密码的一些意外后果。
如果您没有SSL并且正在远程修改,则您正在通过网络传输纯文本密码。如果将日志记录配置设置为记录DDL语句log_statement=DDL或更高,则您的纯文本密码将显示在错误日志中。如果您没有保护这些日志,这是一个问题。如果您收集这些日志/ETL并将其显示在其他人可以访问的位置,他们可能会看到此密码等。如果您允许用户管理其密码,他们会在不知不觉中向负责查看日志的管理员或低级员工透露密码。
话虽如此,以下是我们如何通过构建密码的MD5哈希值来更改用户的密码。
PostgreSQL在将密码散列为MD5时,会将密码与用户名相加,然后在得到的散列前加上文本“MD5”。示例:“md5”+md5(密码+用户名)巴什语:echo-n“passwordStringUserName”|md5sum|awk“{print”md5“$1}”输出:md5d6a35858d61d85a82ab1fb044aba9日在PowerShell中:[PSCredential]$Credential=获取凭据$StringBuilder=新对象System.Text.StringBuilder$null=$StringBuilder.Append('md5');[System.Security.Cryptography.HashAlgorithm]::Create('md5').ComputerHash([System.Text.Encoding]::ASCII.GetBytes(((从SecureStringToPlainText转换为SecureString$Credential.Password)+$Credential.UserName)))| For每个对象{$null=$StringBuilder.Append($_.ToString(“x2”))}$StringBuilder.ToString();##输出,输出md5d6a35858d61d85a82ab1fb044aba9日最后,ALTERUSER命令将如下所示使用密码“md5d6a35858d61d85e4a82ab1fb044aba9d”更改用户用户名;相关链接(请注意,我只会链接到文档的最新版本。对于旧版本,它会有一些变化,但MD5仍然支持。)创建角色密码始终以加密方式存储在系统目录中。ENCRYPTED关键字无效,但为向后兼容而被接受。加密方法由配置参数password_encryption确定。如果呈现的密码字符串已采用MD5加密或SCRAM加密格式,则无论password_encrypt如何,都会按原样存储(因为系统无法解密指定的加密密码字符串,所以请使用不同的格式对其进行加密)。这允许在转储/还原期间重新加载加密密码。密码加密的配置设置PostgreSQL密码验证文档构建PostgreSQL密码MD5哈希值
推荐文章
- PostgreSQL删除所有内容
- 为什么PostgreSQL要对索引列进行顺序扫描?
- PostgreSQL INSERT ON冲突更新(upsert)使用所有排除的值
- 如何检查一个表是否存在于给定的模式中
- 如何将整数转换为字符串作为PostgreSQL查询的一部分?
- Psycopg2:用一个查询插入多行
- PostgreSQL返回JSON数组的结果集?
- PostgreSQL通配符LIKE用于单词列表中的任何一个
- 检查Postgres JSON数组是否包含字符串
- psql: FATAL: Peer authentication failed for user "dev"
- 如何在Postgres/SQL中获得两个整数的最小/最大值?
- 如何在postgresql中显示函数,过程,触发器源代码?
- 如何用postgres将间隔转换为小时数?
- 在postgresql中将查询结果按月和年分组
- 如何改变一个列的数据类型在PostgreSQL表?