Mysql ER#u访问被拒绝#u错误:用户的访问被拒绝''@';本地主机';(使用密码:否)

Mysql ER#u访问被拒绝#u错误:用户的访问被拒绝''@';本地主机';(使用密码:否),mysql,node.js,database,localhost,Mysql,Node.js,Database,Localhost,我有这个问题,我已经研究过了,我无法解决它,我想它与数据库权限有关,但我无法修复它: if (error) throw error; ^ Error: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO) at Handshake.Sequence._packetToError (/home/carlos/www/express-cc/node_modules/mysq

我有这个问题,我已经研究过了,我无法解决它,我想它与数据库权限有关,但我无法修复它:

if (error) throw error;
       ^

Error: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO)
at Handshake.Sequence._packetToError (/home/carlos/www/express-cc/node_modules/mysql/lib/protocol/sequences/Sequence.js:52:14)
at Handshake.ErrorPacket (/home/carlos/www/express-cc/node_modules/mysql/lib/protocol/sequences/Handshake.js:103:18)
at Protocol._parsePacket (/home/carlos/www/express-cc/node_modules/mysql/lib/protocol/Protocol.js:279:23)
at Parser.write (/home/carlos/www/express-cc/node_modules/mysql/lib/protocol/Parser.js:76:12)
at Protocol.write (/home/carlos/www/express-cc/node_modules/mysql/lib/protocol/Protocol.js:39:16)
at Socket.<anonymous> (/home/carlos/www/express-cc/node_modules/mysql/lib/Connection.js:103:28)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
at readableAddChunk (_stream_readable.js:253:11)
--------------------
at Protocol._enqueue (/home/carlos/www/express-cc/node_modules/mysql/lib/protocol/Protocol.js:145:48)
at Protocol.handshake (/home/carlos/www/express-cc/node_modules/mysql/lib/protocol/Protocol.js:52:23)
at Connection.connect (/home/carlos/www/express-
cc/node_modules/mysql/lib/Connection.js:130:18)
at Object.<anonymous> (/home/carlos/www/express-cc/db.js:10:12)
at Module._compile (module.js:573:30)
at Object.Module._extensions..js (module.js:584:10)
at Module.load (module.js:507:32)
at tryModuleLoad (module.js:470:12)
at Function.Module._load (module.js:462:3)
at Module.require (module.js:517:17)
下面是我的db.js文件:

 var mysql = require('mysql')
  var connection = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database : process.env.DB_NAME,
  sockertPath: '/var/run/mysqld/mysqld.sock'
})

 connection.connect()

 connection.query('SELECT 1 + 1 AS solution',
 function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].
  solution)
});

 module.exports = connection;

您没有提供数据库用户:

Error: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO)

您必须专门创建MySQL用户才能访问该应用程序。创建用户并设置密码(不要将密码保留为空)。不要忘记授予此用户访问应用程序数据库和表的权限。我希望我已经帮了你。

你可以做以下事情: mysql-u根-p 输入密码:

在这里创建用户,在这里创建数据库,然后在代码中使用这些详细信息。
i、 e通过以root用户身份登录来创建用户。

您必须添加新用户,该用户的IP地址为allowed host部分,而不是“localhost”名称


ALTER USER'root'@'localhost'由“”用mysql_native_密码标识

然后,在执行该命令后,通过执行该命令刷新权限:


flush特权

我遇到了一个类似的问题,我的所有连接都在工作,但我遇到了错误“ER\u ACCESS\u DENIED\u error:ACCESS DENIED for user'@'localhost'(使用密码:NO)”我的调用是在app.js级别的中间件中进行的,因此在这种情况下,.env值还无法访问(这可以帮助那些和我有同样问题的人)我必须补充:

require('dotenv').config();
在connexion文件中,如下所示:

const mysql = require('mysql')
require('dotenv').config();
const connectionLog = mysql.createPool({
    connectionLimit : 10,
    host: process.env.DB_HOST_LOG,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_DATABASE,
    port:process.env.DB_PORT
})

对我来说,这就是解决方案。

%
代替
localhost
解决了这个问题:

CREATE USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON db.* TO 'user'@'%';
而不是

CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON db.* TO 'user'@'localhost';

@您在错误消息中看到的技术,它缺少用户名,并且没有提供密码,因此出于某种原因,
process.env.DB_USER
也不
process.env.DB_password
不包含来自
env.default
的凭据。因此它与DB权限无关。@michaJIS那么,我该怎么办?
CREATE USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON db.* TO 'user'@'%';
CREATE USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON db.* TO 'user'@'localhost';