SQLAlchemy未提供密码错误

59

我可能犯了一个愚蠢的错误,但是我似乎找不到令人满意的解决方案。

运行db.create_all()时,我收到了以下错误信息。

sqlalchemy.exc.OperationalError: (OperationalError) fe_sendauth: no password supplied  None None

我的数据库链接已设置为

'postgresql://localhost/db_name'

这在我的 Mac 和 Heroku 上运行良好,但在 Ubuntu(DigitalOcean)上不可以。

有什么想法我可能做错了什么吗?

6个回答

94

你可能只需要从连接字符串中删除“localhost”:

'postgresql:///db_name'

这告诉psycopg2使用Unix域套接字。您的默认配置将使用"ident",因此您将作为运行脚本的用户进行连接。在默认配置中,“md5”仅适用于TCP连接。


6
你要如何以不同的用户名进行传递? - Fábio Dias
注意:当为本地(非TCP/IP)连接指定ident时,将使用对等身份验证(参见第20.3.6节),而不是peer身份验证。请使用“map”配置将操作系统用户名映射到数据库用户名。 - Danny W. Adair
我正在Windows上进行此操作,尽管具有正确的数据库字符串,但仍然出现相同的错误。 - Apurva Kunkulol
1
如果它不能工作,你怎么知道它是正确的? - Danny W. Adair

50

网址模式应为:

postgresql://user:password@localhost:5432/database_name

pip安装psycopg2
用户应该是postgres或任何您创建并打算使用的其他用户

同样对于mySql,它应该是:

mysql://user:pass@localhost:3306/database_name

pip安装mysql-python


5
我使用同行认证(因此没有密码),但这对我不起作用,出现“未提供密码”的错误。我的连接字符串是 postgresql://user@localhost/db,其中的 user 是我运行代码时使用的 Linux 用户名。 - lfk
2
我使用了这个解决方案来解决我的问题,但在我的情况下,我从URL中省略了端口号:postgresql://user:password@localhost/database_name - khwilo
1
@omokehinde igbekoyi,有没有办法隐藏用户名和密码? 我有一个脚本,其中有与您相同的命令,但如果有人grep PostgreSQL进程,它也会给出用户ID和密码。我不想暴露那个。 - punam
1
@punam 你可以将这些设置为环境变量。 - omokehinde igbekoyi
它会显示在哪里?你有一个环境文件吗? - omokehinde igbekoyi
显示剩余2条评论

9
在您的Mac上,PostgreSQL已设置为从本地主机进行trustpeer身份验证的连接。
在您的Ubuntu计算机上,它被设置为对来自本地主机的连接进行md5身份验证。
您需要配置密码或更改身份验证模式。请参见pg_hba.confUbuntu PostgreSQL指南(其中有关于此错误的部分)。

4

以下方法适用于我。您连接到PostgreSQL数据库需要密码,因此以下是您应该编写的内容。

pg_user = "magicmike"
pg_pwd = "test123"
pg_port = "5432"
app.config["SQLALCHEMY_DATABASE_URI"] = "postgresql://{username}:{password}@localhost:{port}/foodversity_db".format(username=pg_user, password=pg_pwd, port=pg_port)

有没有办法隐藏用户名和密码?我有一个脚本,其中有连接PostgreSQL的命令,但如果有人使用grep ps -ef | postgresql命令,它会显示用户ID和密码。我不想暴露这些信息。 - punam

-1

首先确保数据库服务器已连接,然后再运行命令。虽然有点傻,但对我很有效。


-2

针对远程服务器

  • 远程服务器 => postgresql://<用户名>:<密码>@<IP地址>:<端口号>/<数据库名称>

在配置中使用本地

  • 本地数据库 => postgressql:///<数据库名称>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接