我用mysql创建了一个数据库,通过自制安装了mysql 8。到目前为止,我没有问题地连接到数据库,但是当我试图通过INSERT将数据上传到数据库时,我会得到以下错误:
[nodemon] 2.0.19
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/`
Server on port: 4000
DB is Connected!
GET /expenses/add 200 35.845 ms - 1756
GET /css/style.css 304 11.540 ms - -
Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'localhost' (using password: NO)
at Sequence._packetToError (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
at Handshake.ErrorPacket (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/protocol/sequences/Handshake.js:123:18)
at Protocol._parsePacket (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/protocol/Protocol.js:291:23)
at Parser._parsePacket (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/protocol/Parser.js:433:10)
at Parser.write (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/protocol/Parser.js:43:10)
at Protocol.write (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/protocol/Protocol.js:38:16)
at Socket.<anonymous> (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/Connection.js:88:28)
at Socket.<anonymous> (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/Connection.js:526:10)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:324:12)
--------------------
at Protocol._enqueue (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at PoolConnection.connect (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/Connection.js:116:18)
at Pool.getConnection (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/Pool.js:48:16)
at Pool.query (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/mysql/lib/Pool.js:202:8)
at node:internal/util:361:7
at new Promise (<anonymous>)
at Pool.query (node:internal/util:347:12)
at /Users/manubrandes/Documents/proyects/El-Contador-1/src/routes/expenses.js:19:20
at Layer.handle [as handle_request] (/Users/manubrandes/Documents/proyects/El-Contador-1/node_modules/express/lib/router/layer.js:95:5) {
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlMessage: "Access denied for user 'root'@'localhost' (using password: NO)",
sqlState: '28000',
fatal: true
}
POST /expenses/add 200 9.534 ms - 18--如果你先看一下,连接可以工作,但我得到了这个错误.
这里是我的database.js代码
const { Console } = require('console');
const mysql = require('mysql');
const { promisify } = require('util');
const { database } = require('./keys');
const pool = mysql.createPool(database);
pool.getConnection((err,connection) => {
if (err) {
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
console.error('DATABASE CONNECTION WAS CLOSED');
}
if(err.code === 'ER_CON_COUNT_ERROR'){
console.error('DATABASE HAS TO MANY CONNECTIONS')
}
if(err.code === 'ECONNREFUSED'){
console.error('DATABASE CONNECTION WAS REFUSED')
}
}
if (connection) connection.release();
console.log('DB is Connected!');
return;
})
pool.query = promisify(pool.query);
module.exports = pool;我的keys.js档案
module.exports = {
database: {
connectionLimit : 100,
host: '127.0.0.1',
user: 'root',
pass:'mypass',
database: 'db_moneymanager'
}
}最后是我发表文章的文件:
const express = require('express');
const router = express.Router();
//Conexion a la db
const pool = require('../database');
router.get('/add', (req, res) => {
res.render('expenses/add');
});
router.post('/add', async(req, res) => {
const { title, amount, description } = req.body;
const newExpense = {
title,
amount,
description
};
await pool.query('INSERT INTO outgoings set ?', [newExpense]);
res.send('Received')
});
module.exports=router我已经试过了:
CREATE USER 'manueldev'@'%' IDENTIFIED BY 'pepe';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'manueldev'@'%' WITH GRANT OPTION;
ALTER USER 'manueldev'@'%' IDENTIFIED WITH mysql_native_password BY 'pepe';非常感谢您抽出时间阅读这个问题,并试图给我一个解决方案。
发布于 2022-08-14 09:23:30
这是MySql的新安装吗?
我相信您为您的应用程序访问manueldev创建了一个数据库用户,但是您的数据库配置具有用户root。
尝试使用正确的用户名和密码,并试一试。
https://stackoverflow.com/questions/73350403
复制相似问题