首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Acces拒绝errno: 1045 on POST方法。Mysql 8 Nodejs

Acces拒绝errno: 1045 on POST方法。Mysql 8 Nodejs
EN

Stack Overflow用户
提问于 2022-08-14 09:11:51
回答 1查看 129关注 0票数 0

我用mysql创建了一个数据库,通过自制安装了mysql 8。到目前为止,我没有问题地连接到数据库,但是当我试图通过INSERT将数据上传到数据库时,我会得到以下错误:

代码语言:javascript
复制
[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代码

代码语言:javascript
复制
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档案

代码语言:javascript
复制
module.exports = {
    database: {
        connectionLimit : 100,
        host: '127.0.0.1',
        user: 'root',
        pass:'mypass',
        database: 'db_moneymanager'
        }
}

最后是我发表文章的文件:

代码语言:javascript
复制
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

我已经试过了:

代码语言:javascript
复制
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';

非常感谢您抽出时间阅读这个问题,并试图给我一个解决方案。

EN

回答 1

Stack Overflow用户

发布于 2022-08-14 09:23:30

这是MySql的新安装吗?

我相信您为您的应用程序访问manueldev创建了一个数据库用户,但是您的数据库配置具有用户root

尝试使用正确的用户名和密码,并试一试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73350403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档