2017-04-13 16 views
0

连接这里的错误:PostgreSQL的:无法与新创建的用户

$ psql -h localhost -U kMbjQ6pR9G -d fzvqFILx0d 
Password for user kMbjQ6pR9G: 
psql: FATAL: password authentication failed for user "kMbjQ6pR9G" 
FATAL: password authentication failed for user "kMbjQ6pR9G" 

我可能缺少使用新鲜PostgreSQL的配置步骤。

这里的命令行我试图创建一个新的用户用自己的数据库:

sudo -u postgres bash -c "psql -c \"CREATE USER $USER WITH PASSWORD '$PASSWORD';\"" && 
sudo -u postgres bash -c "psql -c \"CREATE DATABASE $DB;\"" && 
sudo -u postgres bash -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE $DB to $USER;\"" && 

这里是PostgreSQL的配置:

$ sudo grep -v ^# /etc/postgresql/9.5/main/pg_hba.conf |grep -v ^$ 
local all    postgres        md5 
local all    all          md5 
host all    all    127.0.0.1/32   md5 
host all    all    ::1/128     md5 

这里就是我创建的测试accound:

$ sudo -u postgres bash -c 'psql -c "select * from pg_shadow;"' 
Password: 
    usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls |    passwd    | valuntil | useconfig 
------------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+----------- 
av6izmbp9l | 16384 | f   | f  | f  | f   | md5a49721ef3f5428e269badc03931baf48 |   | 
rqmejchq7n | 16386 | f   | f  | f  | f   | md54edf3a05ca96a435f94152b75495e9dc |   | 
yyfiknesu8 | 16388 | f   | f  | f  | f   | md5b3d4a03913569abbf318bdc490d0f821 |   | 
qgv2ryqvdw | 16390 | f   | f  | f  | f   | md5d0959b4b5e1ed2982e19e4d0af574b11 |   | 
postgres |  10 | t   | t  | t  | t   | md5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |   | 
pf09joszuj | 16392 | f   | f  | f  | f   | md5a920dc31666459e5f0a96e9430d07f02 |   | 

我觉得这很简单,但我想念这一点。

感谢您的支持, David。

+0

我似乎无法弄清错误信息。输出对我来说看起来很正常。只要没有错误信息,就表示连接成功。 – alvits

+0

你是如何尝试连接,以及你得到什么样的错误?您已经向我们展示了如何创建用户的详细信息,但我们需要了解您正在做什么,以便帮助解决问题。 – jmelesky

+0

你得到的错误是什么? –

回答

0

的问题是显而易见的:用户名&数据库名称是小写的!

下面是我用它来创建用户脚本和自己的数据库:

#!/bin/bash 
if [ -n "$1" ]; then 
    DB="$1" 
else 
    DB=$(php -r "echo substr(str_shuffle(str_repeat('abcdefghijklmnopqrstuvwxyz', ceil(10/63))),1,10);") 
fi 

USER=$(php -r "echo substr(str_shuffle(str_repeat('abcdefghijklmnopqrstuvwxyz', ceil(10/63))),1,10);") 
PASSWORD=$(php -r "echo substr(str_shuffle(str_repeat('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil(20/63))),1,20);") 

sudo -u postgres psql -c "CREATE USER $USER WITH PASSWORD '$PASSWORD';" 
sudo -u postgres psql -c "CREATE DATABASE $DB;" 
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB to $USER;" 

cat << EndOfMessage 
POSTGRESQL_ADDON_DB="$DB" 
POSTGRESQL_ADDON_HOST="localhost" 
POSTGRESQL_ADDON_PASSWORD="$PASSWORD" 
POSTGRESQL_ADDON_PORT="5432" 
POSTGRESQL_ADDON_USER="$USER" 

EndOfMessage 

https://github.com/davidbouche/linux-install/blob/master/pgsql-database-create.sh

感谢您的贡献。 David

0

尝试连接时,您是否明确指定了数据库?

psql -h localhost -U myuser -d mydb 

这是怎么了,我通常建立一个用户完全拥有一个给定的数据库:

create role myuser with createdb login encrypted password 'mypassword'; 
create database mydb with owner 'myuser' encoding 'utf8'; 

pg_hba.conf: 
local myuser   mydb         md5 
...