psql -U someuser -W some_db 不尊重密码?
psql -U someuser -W some_db doesn't respect the password?
我有一个数据库和一个通过 PSQL 设置的角色,例如...
CREATE ROLE someuser WITH LOGIN PASSWORD 'S0m3u53r';
CREATE DATABASE some_db OWNER someuser;
我注意到当我尝试以该用户身份连接时,我可以输入我想要的任何密码。下面是我输入 "fizzbuzz" 作为密码的 psql 会话的输出。 Psql 只是让我进去,从不费心检查密码。
$ psql -U someuser -W some_db
Password for user someuser:
psql (9.4.1)
Type "help" for help.
some_db=> select current_user;
current_user
--------------
someuser
(1 row)
some_db=>
为什么 psql 不强制执行该用户密码?当我输入错误的密码时,我预计它会以某种方式拒绝我,但 psql 似乎并不关心。我一定是遗漏了什么。
postgres 用户身份验证设置存储在名为 pg_hba.conf
的文件中。
您当前的设置允许任何人通过 unix 套接字 进行本地连接 trusted
,即登录时不需要密码。只要用户存在于数据库中,就允许登录。
对于本地连接,您可以将其更改为 md5
或 password
对于网络连接,password
不够安全,因为它发送原始文本密码。
找到您的 pg_hba.conf
文件。在文件底部附近有一行内容如下:
# "local" is for Unix domain socket connections only
local all all trust
改为
# "local" is for Unix domain socket connections only
local all all md5
pg_hba.conf
文件的位置取决于您使用的系统。在 Ubuntu,文件将在
/etc/postgresql/9.4/main/pg_hba.conf
在 OSX 上(通过自制程序安装),文件的路径是
/usr/local/var/postgres/pg_hba.conf
要了解有关 postgres 身份验证的更多信息,请参阅 official documentation
我有一个数据库和一个通过 PSQL 设置的角色,例如...
CREATE ROLE someuser WITH LOGIN PASSWORD 'S0m3u53r';
CREATE DATABASE some_db OWNER someuser;
我注意到当我尝试以该用户身份连接时,我可以输入我想要的任何密码。下面是我输入 "fizzbuzz" 作为密码的 psql 会话的输出。 Psql 只是让我进去,从不费心检查密码。
$ psql -U someuser -W some_db
Password for user someuser:
psql (9.4.1)
Type "help" for help.
some_db=> select current_user;
current_user
--------------
someuser
(1 row)
some_db=>
为什么 psql 不强制执行该用户密码?当我输入错误的密码时,我预计它会以某种方式拒绝我,但 psql 似乎并不关心。我一定是遗漏了什么。
postgres 用户身份验证设置存储在名为 pg_hba.conf
的文件中。
您当前的设置允许任何人通过 unix 套接字 进行本地连接 trusted
,即登录时不需要密码。只要用户存在于数据库中,就允许登录。
对于本地连接,您可以将其更改为 md5
或 password
对于网络连接,password
不够安全,因为它发送原始文本密码。
找到您的 pg_hba.conf
文件。在文件底部附近有一行内容如下:
# "local" is for Unix domain socket connections only
local all all trust
改为
# "local" is for Unix domain socket connections only
local all all md5
pg_hba.conf
文件的位置取决于您使用的系统。在 Ubuntu,文件将在
/etc/postgresql/9.4/main/pg_hba.conf
在 OSX 上(通过自制程序安装),文件的路径是
/usr/local/var/postgres/pg_hba.conf
要了解有关 postgres 身份验证的更多信息,请参阅 official documentation