SQLAlchemy 没有提供密码错误

Posted

技术标签:

【中文标题】SQLAlchemy 没有提供密码错误【英文标题】:SQLAlchemy no password supplied error 【发布时间】:2014-07-13 10:17:33 【问题描述】:

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

运行db.create_all()时出现以下错误。

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

我的数据库链接设置为

'postgresql://localhost/db_name'

这在我的 Mac 和 Heroku 上运行良好,但在 ubuntu (digitalocean) 上不行。

任何想法我可能做错了什么?

【问题讨论】:

【参考方案1】:

在您的 Mac 上,PostgreSQL 设置为 trustpeer 身份验证,用于来自 localhost 的连接。

在你的 Ubuntu 机器上,它设置为 md5 身份验证,用于来自本地主机的连接。

您需要配置密码,或更改身份验证模式。请参阅 pg_hba.conf 和 Ubuntu guide for PostgreSQL(有一个关于此错误的部分)。

【讨论】:

【参考方案2】:

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

'postgresql:///db_name'

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

【讨论】:

你将如何以这种方式传递不同的用户名? "注意:当为本地(非 TCP/IP)连接指定 ident 时,将使用对等身份验证(参见第 20.3.6 节)。" - postgresql.org/docs/9.6/static/auth-methods.html#AUTH-PEER - 使用“map”配置将 os 用户名映射到 db 用户名。 我在 Windows 上这样做,尽管有正确的数据库字符串,但我得到了同样的错误。 如果它不起作用,你怎么知道它是正确的?【参考方案3】:

网址格式应为:

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

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

对于 mysql 也是如此:

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

pip 安装 mysql-python

【讨论】:

我正在使用对等身份验证(所以没有密码),这对我不起作用,得到no password supplied。我的连接字符串是postgresql://user@localhost/db,其中user 是我运行代码的Linux 用户。 我使用此解决方案解决了我的问题,但在我的情况下,我从 URL 中省略了端口:postgresql://user:password@localhost/database_name Thx @khwilo 对于 AWS RDS 的用户,默认的 database_name 是 postgres @omokehinde igbekoyi 有没有办法隐藏用户并通过?我有一个脚本,它的命令和你一样,但是如果有人 grep PostgreSQL 进程,它也会给出用户 ID 和密码。我不想暴露。 @punam 你可以在你的环境变量中设置这些【参考方案4】:

下面对我有用。您与 postgres 数据库的连接需要密码;因此,下面是你应该写的..

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 ,它也提供用户名和密码。我不想暴露这个【参考方案5】:

对于远程服务器

远程服务器 => postgresql://<username>:<password>@<ipaddress>:<port>/<database>

供本地配置使用

本地数据库 => postgressql:///<database>

【讨论】:

【参考方案6】:

首先确保数据库服务器已连接,然后再次运行命令。傻,但它对我有用。

【讨论】:

以上是关于SQLAlchemy 没有提供密码错误的主要内容,如果未能解决你的问题,请参考以下文章

反映加密的 Access 数据库时出现“无效密码”错误

ReportServer中的SMTP配置和java错误。没有为PKCS#12 KeyStore提供密码

为啥我的gmail一直提示密码错误无法登录?可是密码没有错,前几天朋友用那个密码就给我登录上一次

映射网络硬盘的时候,明明没有设置密码为啥提示密码错误?

火狐登录路由器,未输入密码就提示用户名密码错误

“验证错误:密码不能为空”但表单中没有密码字段