You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

尝试连接PlanetScale数据库时遭遇Access Denied错误求助

解决PlanetScale数据库连接的权限拒绝问题

问题重现

尝试连接PlanetScale数据库时遭遇权限拒绝错误,代码如下:

from sqlalchemy import create_engine, text

db_connection_string = "mysql+pymysql://dvgrfhodw7c31y4ss9j5:dvgrfhodw7c31y4ss9j5@aws.connect.psdb.cloud/aws.connect.psdb.cloud?charset=utf8mb4"

engine = create_engine(
    db_connection_string,
    connect_args= {
        "ssl": {
            "ssl_ca": "/etc/ssl/cert.pem"
        }
    }
)

with engine.connect(db_connection_string) as conn:
    result = conn.execute(text("select * from jobs"))
    print(result.all())

错误信息:

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user 'dvgrfhodw7c31y4ss9j5'")

解决方案

1. 修正数据库连接字符串格式

你的连接字符串存在错误:@aws.connect.psdb.cloud 之后的部分应该是实际的数据库名称,而非重复主机地址。正确格式应为:

db_connection_string = "mysql+pymysql://dvgrfhodw7c31y4ss9j5:你的密码@aws.connect.psdb.cloud/你的数据库名?charset=utf8mb4&ssl-mode=REQUIRED"

注意替换你的密码和你的数据库名为PlanetScale控制台中对应的信息。

2. 修正engine.connect()的调用方式

engine.connect()不需要传入连接字符串参数,直接调用即可:

with engine.connect() as conn:
    result = conn.execute(text("select * from jobs"))
    print(result.all())

3. 验证PlanetScale用户权限

  • 登录PlanetScale控制台,确认当前用户dvgrfhodw7c31y4ss9j5拥有目标数据库的读写权限(至少需要读权限执行SELECT操作)。
  • 检查用户IP访问限制:在PlanetScale数据库的"Settings" > "IP allowlist"中,确认你的当前IP已添加到允许列表,或临时开启"Allow all IPs"(仅测试环境建议使用,生产环境需严格限制)。

4. 确认SSL配置正确性

PlanetScale要求强制SSL连接,确保SSL配置有效:

  • 对于Linux/macOS,/etc/ssl/cert.pem通常是正确的系统根证书路径;
  • 对于Windows,可使用系统内置根证书,或从可信渠道获取根证书文件并指定其路径。

也可以简化SSL配置,使用ssl_mode替代手动指定证书路径:

engine = create_engine(
    db_connection_string,
    connect_args={"ssl": {"ssl_mode": "REQUIRED"}}
)

内容的提问来源于stack exchange,提问作者Gabriel Elufidodo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:45:10