【问题标题】:How to setup and connect my database to NodeJS application on digital ocean如何设置我的数据库并将其连接到数字海洋上的 NodeJS 应用程序
【发布时间】:2020-07-04 12:05:45
【问题描述】:

我设法在 Digital-Ocean 上创建了一个 droplet,并设法将我的 Node JS 应用程序克隆到它上面。在本地,该应用程序连接到 MySQL 数据库,我希望在实时版本上也是如此。无知地,我尝试创建一个托管数据库集群,并添加了 1 个用户帐户并创建了 1 个数据库。现在我不知道如何将导出的database.sql文件导入数据库,因为我只习惯了phpMyAdmin。

我怎样才能让它工作并连接到我的 NodeJS 应用程序?

【问题讨论】:

    标签: mysql node.js digital-ocean database-cluster


    【解决方案1】:

    您使用phpmyadmin 作为交互式 Mysql 客户端程序。它易于使用,但设置起来却很困难,因为它是一个网络应用程序。

    尝试另一个 MySql 客户端程序。令人难忘的名为mysql 的命令行客户端是一个不错的选择。

    在你的 droplet 上装一个外壳,然后说

    sudo apt install -y mysql-client
    mysql -u username -p -h databasehostname -D database
    mysql> source database.sql
    mysql> quit
    

    系统将提示您输入数据库密码。

    这应该会导入您的数据库。

    mysql 命令行程序非常有用,值得您花一些时间学习使用。

    【讨论】:

      【解决方案2】:

      首先,通过使用 DigitalOcean 数据库添加数据库防火墙,确保您的数据库集群不对外开放。您可以允许来自您自己的 droplet 的私有 IP 地址和您自己的公共地址(或 VPN 或您的设置方式)的连接。完成后,您应该能够在本地导入您的 SQL 文件(或从 DO Droplet,只要您安装了 mysql 客户端):

      mysql -h [host-provided-do] -P [port-provided-do] -u [username-provided-do] -p [db-name-provided-do] < my-file.sql
      

      最重要的是确保您的托管数据库不对外界开放,并确保它只允许来自已知 IP 地址的传入连接。

      在您的 NodeJS 应用程序中,您可以将驱动程序设置为连接到 DO 提供的私有子网。

      【讨论】:

      • 我尝试在本地机器上安装 mysql 客户端,但出现以下错误:ERROR 3750 (HY000) at line 31: Unable to create or change a table without a primary key, when the system variable 'sql_require_primary_key' is set. Add a primary key to the table or unset this variable to avoid this message. Note that tables without a primary key can cause performance problems in row-based replication, so please consult your DBA before changing this setting.
      • 在他们的文档中有很好的解释:“包含没有主键且包含超过 5000 行的表的 MySQL 数据库可能会遇到复制问题。为了防止这种情况,DigitalOcean 现在要求您添加主键您在 2020 年 4 月 8 日之后创建的任何托管 MySQL 数据库中创建的每个新表”。 digitalocean.com/docs/databases/mysql。所以,你需要在所有表上创建一个主键
      • 我认为您可以更改会话变量,这没问题,但非常不鼓励。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 2020-02-04
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 2016-05-30
      相关资源
      最近更新 更多