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 设置为 trust
或 peer
身份验证,用于来自 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 没有提供密码错误的主要内容,如果未能解决你的问题,请参考以下文章
ReportServer中的SMTP配置和java错误。没有为PKCS#12 KeyStore提供密码