首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从node.js服务器连接到本地主机数据库

无法从node.js服务器连接到本地主机数据库
EN

Stack Overflow用户
提问于 2013-07-06 00:22:58
回答 7查看 19.5K关注 0票数 4

我在尝试连接到我的本地主机数据库时遇到了很多问题。我尝试过使用mysqlmysql-simple节点模块,但在这两种情况下都无法连接。

下面是我在'mysql‘模块中的用法:

代码语言:javascript
复制
var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  port     : '8000',
  user     : 'uber',
  password : 'pass',
});

connection.connect(function(err) {
      if (err) throw err;

      console.log('Connection Successful');
});


connection.query('USE someDB', function(err) {
  if (err) throw err;

  console.log('Query Successful');
});

下面是我对'mysql-simple‘模块的用法:

代码语言:javascript
复制
var database = require('mysql-simple');
database.init('uber', 'pass', 'mysql', 'localhost', 8000);

database.querySingle('SELECT Host FROM user', function(err, results) {
    if (err) {
        console.log('error fetching some active users: ' + err);
        return;
    }
    log('Query Successful');
    for (var i = 0; i < results.length; i++)
        console.log('got active user ' + results[i]);
}

在这两种情况下,当我运行我的node.js服务器时,它从不记录已连接。我尝试用'127.0.01‘替换localhost并创建一个新用户,以确保密码正确,但无济于事。为什么它不能连接?

谢谢

EN

回答 7

Stack Overflow用户

发布于 2014-07-13 02:16:43

很可能是网络被关闭了,这意味着mysql服务器通过UNIX套接字与客户端通信,而不是通过TCP/IP。您可以查看运行mysql客户端并运行"status“命令。如果您在那里看到端口号,那么您的mysql服务器是通过TCP/IP进行通信的,否则您将看到类似于"socket pathname…“的内容。,获取路径名并将其提供给node.js连接参数,例如

..。socketPathname:'/opt/lampp/var/ ... ',...

https://github.com/felixge/node-mysql页面中检出(搜索"socketPathname")

霍普那是你的问题。

票数 7
EN

Stack Overflow用户

发布于 2017-01-04 19:49:44

您应该使用mysql_config来显示套接字的路径。

这是我的MAC上的一个示例

代码语言:javascript
复制
QuyLes-MacBook-Pro:freelancer quyle$ mysql_config
Usage: /Applications/MAMP/Library/bin/mysql_config [OPTIONS]
Options:
        --cflags         [-I/Applications/MAMP/Library/include -fno-omit-frame-pointer   -g -DNDEBUG]
        --include        [-I/Applications/MAMP/Library/include]
        --libs           [-L/Applications/MAMP/Library/lib  -lmysqlclient  -lz]
        --libs_r         [-L/Applications/MAMP/Library/lib   -lmysqlclient_r  -lz]
        --plugindir      [/Applications/MAMP/Library/lib/plugin]
        --socket         [/Applications/MAMP/tmp/mysql/mysql.sock]
        --port           [0]
        --version        [5.5.42]
        --libmysqld-libs [-L/Applications/MAMP/Library/lib  -lmysqld]
        --variable=VAR   VAR is one of:
                pkgincludedir [/Applications/MAMP/Library/include]
                pkglibdir     [/Applications/MAMP/Library/lib]
                plugindir     [/Applications/MAMP/Library/lib/plugin]

然后,为yourMysqlConnection添加密钥socketPath。

关于我的样例

代码语言:javascript
复制
MysqlServer: {
     adapter: 'sails-mysql',
     host: 'localhost',
     user: 'root', //optional
     password: 'root', //optional
     database: 'nodejs', //optional,
     socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'    
},
票数 2
EN

Stack Overflow用户

发布于 2013-07-06 00:25:27

改变这一点

代码语言:javascript
复制
database.init('uber', 'pass', 'mysql', 'localhost', 8000);

代码语言:javascript
复制
database.init('uber', 'pass', 'mysql', 'localhost', 3306);

你应该通过

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17493224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档