【问题标题】:Remote mysql database connection in nodejsnodejs中的远程mysql数据库连接
【发布时间】:2018-02-08 00:59:19
【问题描述】:

我想连接另一个服务器数据库。例如,代码在 abc 服务器中,我想要另一台服务器的数据库,即 xyz 服务器。我已经做了。但出现错误

错误:ER_BAD_DB_ERROR:未知数据库“cp”

我确实有一个数据库作为 CP

要交互的服务器代码是

var db_config={
  "domain" : "http://****/",
  "hostname" : "****",
  "port"     :  3306,
  "user" : "*****",
  "password" : "****",
  "database" : "cp"
}

    var connection=mysql.createConnection(db_config);
    connection.connect(function(err,s){
      if (err){
        console.log("Error"+err);
      }
      else{
        console.log("db connected");
      }
    });

当我删除数据库并且凭据正确时,我可以连接服务器。如果我使用 information_schema 作为数据库名称,那么数据库也会正确连接。但是当我使用其他数据库时,我仍然面临错误

错误:ER_BAD_DB_ERROR:未知数据库“cp”

我已经在特定服务器中进行了远程访问设置并签入了 php 代码,它在那里工作正常。

请帮助完成这项繁重的任务。

【问题讨论】:

  • 您是否在远程数据库上为您的用户和 IP 地址添加了凭据?听起来您拥有连接到 mysql 服务器但没有访问 cp 数据库的凭据。
  • 确保mysql用户'root'有远程连接权限。
  • @grim 是的,我可以访问 mysql 服务器,但不能访问数据库。已在远程数据库上添加凭据。
  • @NashirUddin 我没有为 root 用户提供。相反,我允许创建的特定用户。那么,当我们授予 root 权限时,您确定它会起作用吗?我会尽力让你知道。
  • @NashirUddin 在授予“root”用户权限并使用凭据时,我收到拒绝访问错误>错误:ER_ACCESS_DENIED_ERROR:用户“root”@“localhost”的访问被拒绝(使用密码:是)但我可以通过 php 代码连接数据库

标签: php mysql node.js database


【解决方案1】:

我认为您的授权声明指定不正确(如果它与您在上面的评论中显示的完全相同)。

应该是:

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

但是,这些是非常普遍的特权。我建议将其限制为特定的数据库:

GRANT INSERT, UPDATE, SELECT, DELETE  ON <database>.* TO 'USERNAME'@'%'; 

设置数据库后,普通用户无需创建或修改表或授予其他用户访问权限。

另外,如您所见,我没有在授权命令中指定密码。这应该在 CREATE USER 命令中指定,因为在某些情况下,GRANT 可能会记录在服务器日志或客户端历史文件中,这意味着任何有权读取该信息的人都可以读取明文密码。

【讨论】:

    猜你喜欢
    • 2021-09-14
    • 2011-12-06
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2013-08-14
    • 2020-05-05
    • 2015-01-29
    相关资源
    最近更新 更多