为什么我不能连接到mysql服务器?
在同一台服务器上运行Apache/PHP服务器,它连接没有问题!?
var mysql_link = {
host : 'localhost',
port : 3308,
database: 'nodetest',
user : 'root',
password : 'xxx'
};
var connection = mysql.createConnection(mysql_link);
connection.connect(function(err){
console.log(err);
if(err != null){
response.write('Error connecting to mysql:' + err+'\n');
}
});
connection.end();
Run Code Online (Sandbox Code Playgroud)
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
fatal: true }
Run Code Online (Sandbox Code Playgroud)
root@dyntest-amd-6000-8gb /var/www/node/dyntest # ps ax | grep mysqld
7928 pts/0 S+ 0:00 grep mysqld
28942 ? S 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid
29800 ? Sl 17:31 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/lib/mysql/mysql-error.log --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
Run Code Online (Sandbox Code Playgroud)
Vic*_*don 32
我知道这个问题已经得到解答,但对我来说问题是mysql服务器监听的是不在tcp套接字上的Unix套接字.所以解决方案是添加:
port: '/var/run/mysqld/mysqld.sock'
Run Code Online (Sandbox Code Playgroud)
连接选项.
小智 9
M1 MacBook Pro 上的 Mac 操作系统,通过brew 安装 MySQL:
将主机从“localhost”更改为“127.0.0.1”并使用密码创建不同的用户解决了我的这个问题。由于某种原因,我无法使用 root 用户且没有密码连接到我的数据库。我在 MySQL Workbench 上创建了新用户,但您也可以通过 mysql CLI 创建具有管理员权限的新用户。只需谷歌一下即可。
这就是我的后端的样子:
const express = require('express');
const mysql = require('mysql');
const app = express();
const port = 3500;
const db = mysql.createConnection({
host: '127.0.0.1',
user: 'admin',
password: 'admin',
});
db.connect((err) => {
if (err) throw err;
console.log('connected to database');
});
app.listen(port, () => {
console.log('server listening on port 3500');
});
Run Code Online (Sandbox Code Playgroud)
如果这之前有用,我的第一个猜测是你已经获得了在后台运行的node.js脚本的副本,该脚本正在保持连接.
我认为连接被拒绝是一个tcp/ip错误消息,而不是来自MySQL的东西,这表明它没有运行或正在另一个端口或套接字上运行.
你能试试telnet到3308端口吗?要查看服务器是否在该端口上运行?
telnet localhost 3308
Run Code Online (Sandbox Code Playgroud)
你也可以尝试:
mysql -hlocalhost -uroot -pxxx
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31540 次 |
| 最近记录: |