1

我试图让我的 SlashDB REST API 查询一个 MySQL 数据库,它必须通过 SSH 连接到该数据库。

连接字符串不成功,我不能说我很惊讶,因为 SlashDB 在其模板中有一个用于 DB 用户名和密码的位置,但没有用于 SSH/OS 用户名和密码的选项。

向导

如何调整此示例字符串以包含必要且足够的详细信息?

8.8.8.8:3306/somename

这与以下 JSON 相关联(请注意,您不能直接编辑 JSON):

{
    "db_encoding": "utf-8",
    "owners": [
        "admin",
        "user",
        "root"
    ],
    "execute": [
        "admin",
        "user",
        "root"
    ],
    "creator": "admin",
    "read": [
        "admin",
        "user",
        "root"
    ],
    "db_type": "mysql",
    "autoload": true,
    "write": [
        "admin",
        "user",
        "root"
    ],
    "connect_status": "Disconnected",
    "connection": "8.8.8.8:3306/somename",
    "sysuser": {
        "dbuser": "user",
        "dbpass": "pw"
    },
    "db_schema": "somename",
    "offline": true,
    "alternate_key": {},
    "desc": "blah blah blah"
}

由于您可以直接编辑连接字符串,因此我尝试预先添加user@,但没有帮助。

4

1 回答 1

1

SlashDB 没有内置的与 MySQL 的 SSH 连接。但是,有一个解决方法。

  1. 建立从 SlashDB 主机到您的数据库主机的 SSH 隧道。在此示例中,我们使用本地端口 3307。

    ssh -f 用户@XX.XX.XX.XX -L 3307:mysql1.example.com:3306 -N

  2. 在 GUI 中配置连接字符串,如下所示:

    • 数据库主机:localhost
    • 数据库端口:3307
    • 其他参数同上

另请参阅:通过 SSH 隧道的 MySQL 连接 - 如何指定其他 MySQL 服务器?

话虽如此,通常避免将 MySQL 服务器公开但允许公共 REST API 的模式是将 SlashDB 安装在与数据库相同的子网中。然后在防火墙中为 SlashDB 主机开放 80 和 443 端口。这也确保了 SlashDB 到 MySQL 连接的最大性能。

于 2016-06-13T21:41:32.723 回答