我在尝试连接到我的本地主机数据库时遇到了很多问题。我尝试过使用mysql和mysql-simple节点模块,但在这两种情况下都无法连接。
下面是我在'mysql‘模块中的用法:
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‘模块的用法:
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并创建一个新用户,以确保密码正确,但无济于事。为什么它不能连接?
谢谢
发布于 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")
霍普那是你的问题。
发布于 2017-01-04 19:49:44
您应该使用mysql_config来显示套接字的路径。
这是我的MAC上的一个示例
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。
关于我的样例
MysqlServer: {
adapter: 'sails-mysql',
host: 'localhost',
user: 'root', //optional
password: 'root', //optional
database: 'nodejs', //optional,
socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
},发布于 2013-07-06 00:25:27
改变这一点
database.init('uber', 'pass', 'mysql', 'localhost', 8000);至
database.init('uber', 'pass', 'mysql', 'localhost', 3306);你应该通过
https://stackoverflow.com/questions/17493224
复制相似问题