将 MySQL 数据库连接到 Apache Superset

Gio*_*ous 3 mysql mamp sqlalchemy apache-superset

我正在尝试将 MySQL 数据库连接到 Apache Superset,但报告了以下错误:

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1045, "Access denied for user 'supersetuser'@'localhost' (using password: YES)")
Run Code Online (Sandbox Code Playgroud)

我正在使用 MAMP 和 MySQL 在端口 8889 上本地运行。我正在尝试apache_superset使用 user 的凭据连接数据库supersetuserSQLAlchemy我试图在 Apache Superset 中传递的URI 如下所示:

mysql://supersetuser:superset@localhost:8889/apache_superset
Run Code Online (Sandbox Code Playgroud)

我很确定凭据是正确的,因为我刚刚创建了它们。此外,我还尝试为用户分配所需的权限

GRANT ALL PRIVILEGES ON `apache_superset`.* TO 'supersetuser'@'localhost' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)

但我仍然无法将数据库连接到 Apache Superset。

Gio*_*ous 5

我设法通过替换找到解决方案localhost127.0.0.1

所以完整的 SQLAlchemy URI 变为:

mysql://supersetuser:superset@127.0.0.1:8889/apache_superset 
Run Code Online (Sandbox Code Playgroud)

根据文档

在 Unix 上,MySQL 程序特别对待主机名 localhost,与其他基于网络的程序相比,它的方式可能与您期望的不同。对于到 localhost 的连接,MySQL 程序尝试使用 Unix 套接字文件连接到本地服务器。即使提供了 --port 或 -P 选项来指定端口号,也会发生这种情况。要确保客户端与本地服务器建立 TCP/IP 连接,请使用 --host 或 -h 指定主机名值 127.0.0.1,或本地服务器的 IP 地址或名称。