5

我正在尝试运行一个简单的节点示例来访问 mysql 数据库,并收到以下错误错误:ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'ubuntu.local' (using password: YES)

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : '192.168.0.12',
  user     : 'root',
  password : 'password',
  database : 'app'
});

connection.connect();

connection.query('SELECT * from users', function(err, rows, fields) {
  if (err) throw err;

  console.log('The solution is: ', rows[0]);
});

connection.end();

以上是使用node.js访问mysql的代码。任何关于我可能做错的建议,在此先感谢。

4

6 回答 6

9

我遇到了类似的问题,我遇到了同样的错误。

我的答案最终是我使用了不同的端口。默认情况下,mysql 需要 3306 端口,但我使用的是 MAMP,其中 MySQL 服务器端口指定为 8889。只要我将端口定义添加到我的数据库连接,就可以了:

var connection = mysql.createConnection({
    port: 8889,
    user: 'root',
    password : 'password',
    database : 'my_database'
});

注意:这适用于使用 MAMP 的 Mac,尚未在 ubuntu 或 Windows 上尝试过。

于 2013-07-30T20:50:41.913 回答
3

I was getting the exact same issue. I was not able to connect via the mysql module in nodejs, but was able to connect via the mysql client in the terminal (mysql -u root -p1111 -h localhost mydb)

It turns out, the mysql module converts "localhost" to 127.0.0.1. This would not work via the (mysql -u root -p1111 -h 127.0.0.1 mydb). See Issue 734

So I had to set a password for 127.0.0.1 in MySQL and it solved the problem.

Instructions

Connect to mysql via the console:

mysql -u root -p mysql

And Run

SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('Add-Your_password-here');

Source

于 2015-02-26T00:44:27.303 回答
1

我已经解决这个问题很长时间了,在我做过的所有论坛中,一个简单的解决方案可以解决我的问题。我的密码带有一些特殊字符。我把它改成一个更简单的,比如“onlyletters”,它工作得很好。可能是nodejs mysql模块中的编码问题,我可以......希望它对你们中的一些人有所帮助......

于 2016-12-29T00:00:50.623 回答
0

用户可能没有分配任何管理角色,因此他无法访问数据库。用户至少需要 SELECT 权限才能连接。

更多信息在这里: https ://dev.mysql.com/doc/workbench/en/wb-mysql-connections-navigator-management-users-and-privileges.html

于 2019-11-03T20:10:19.170 回答
0

我有一个类似的问题,我的 nodejs 项目。我使用 knex.js 进行查询构建器及其配置。

当主机值为127.0.0.1时会出现此问题,当我将 127.0.0.1 更改为 localhost 时,问题就消失了。

var knex = require('knex')({
    client: 'mysql',
    connection: {
        **host: 'localhost',**
        user: 'userNew',
        password: 'password',
        database: 'appDb'
    }
});
于 2017-03-23T18:02:57.180 回答
-1

实际上,解决方案比您想象的要容易。将主机更改为 127.0.0.1 以进行数据库连接。

于 2016-02-22T00:15:13.270 回答