我编写了一个 Python 脚本,它使用以下命令连接到本地 PostgreSQL 数据库psycopg2 2.6 and Python 2.7.8。连接设置和命令如下:
HOST = '127.0.0.1'
DATABASE_NAME = 'myappdatabase'
DATABASE_PORT = '5432'
DATABASE_USER = 'myappuser'
DATABASE_PASSWORD = 'secret'
DATABASE_TABLE = 'myappdata'
def _database_connection():
conn_string = "host='{0}' dbname='{1}' port='{2}' user='{3}' \
password='{4}'".format(HOST, DATABASE_NAME, DATABASE_PORT, \
DATABASE_USER, DATABASE_PASSWORD)
return psycopg2.connect(conn_string)
该脚本在安装了 PostgreSQL 9.4 的一台机器上运行没有问题。配置在sudo vi /etc/postgresql/9.4/main/pg_hba.conf
没有修改,看起来像这样,没有注释:
local all postgres peer
local all all peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
我还可以使用成功连接到同一个数据库pgAdmin III.
问题
在具有相同设置的第二台计算机上,我无法通过脚本进行连接。出现以下错误:
psycopg2.OperationalError:致命:用户“myappuser”的密码身份验证失败
致命:用户“myappuser”的密码身份验证失败
唯一的不同之处这两台机器之间是数据库密码。所以我把它改成了一个简单的密码——然后,它成功了。所以我把它改回复杂的......而且它确实not再次工作。密码是这样的:
DATABASE_PASSWORD = 'zyx@12AA\w2'
所以我认为:“这太愚蠢了。这一定是我的错误。”因此,我将第一台机器上的数据库密码设置为与第二台机器上的相同。还有 Python 脚本fails.