如果我创建了一个以postgres身份登录到根数据库的用户并创建了一个用户,这将不起作用。我在做什么错了?
postgres=> CREATE ROLE myUser WITH LOGIN PASSWORD 'xxx';
CREATE ROLE
postgres=> GRANT CONNECT ON DATABASE myDatabase TO myUser;
GRANT
postgres=> GRANT USAGE ON SCHEMA public to myUser;
GRANT
postgres=> GRANT SELECT ON ALL TABLES IN SCHEMA public TO myUser;
GRANT
当我进行身份验证时,出现错误。 psql -h $ dbURL -U myUser myDatabase
致命:用户myUser的密码身份验证失败
答案 0 :(得分:0)
您可能要检查是否有.pgpass
file present并检查environment variables,以查看是否设置了PGPASSWORD
或PGPASSFILE
。在上述任何一种情况下,psql都不会提示输入密码,而是从文件或变量中获取密码-如果输入的内容有误,它将给出确切的错误信息。
您可以
PGPASSWORD
或PGPASSFILE
变量.pgpass
文件.pgpass
文件中删除与此连接相对应的条目PGPASSFILE
/ PGPASSWORD
变量的值或.pgpass
文件的内容-W
switch,使其忽略其他设置,并始终提示输入密码pg_hba.conf
文件中的host-based authentication设置以更改身份验证方法或信任某种类型的连接答案 1 :(得分:0)
您创建的用户是“ myuser”,因为对于不在双引号内的SQL标识符,将忽略大小写,并将其折叠为小写。但是在命令行工具中,大小写不会被忽略,因此您尝试以不存在的用户“ myUser”登录。由于不存在的用户没有密码哈希,因此密码验证必须失败。