如何使用sequelize从nodejs应用程序连接到mysql服务器,但是,之前我使用了docker并运行了一个mysql容器,现在我无法在本地连接

vwkv1x7d  于 2023-01-08  发布在  Mysql
关注(0)|答案(2)|浏览(158)

每当我尝试将express.js应用程序连接到节点服务器时,我都会收到一个错误(见下面的控制台消息)。之前,在将应用程序停靠之前,一切都运行顺利,但在创建了mysql-image-container(docker)并通过docker运行mysql之后,一切都运行顺利。但现在,当我尝试将应用程序连接到SQL Server而不是通过docker-container时,我会收到以下错误

(node:22136) UnhandledPromiseRejectionWarning: SequelizeAccessDeniedError: Access denied for user 'root'@'localhost' (using password: YES)
at ConnectionManager.connect (C:\Users\A\ARISE1\node_modules\sequelize\lib\dialects\mysql\connection-manager.js:94:17)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at async ConnectionManager._connect (C:\Users\A\ARISE1\node_modules\sequelize\lib\dialects\abstract\connection-manager.js:220:24)      
at async C:\Users\A\ARISE1\node_modules\sequelize\lib\dialects\abstract\connection-manager.js:174:32
at async ConnectionManager.getConnection (C:\Users\A\ARISE1\node_modules\sequelize\lib\dialects\abstract\connection-manager.js:197:7)  
at async C:\Users\A\ARISE1\node_modules\sequelize\lib\sequelize.js:304:26
at async MySQLQueryInterface.tableExists (C:\Users\A\ARISE1\node_modules\sequelize\lib\dialects\abstract\query-interface.js:102:17)    
at async Function.sync (C:\Users\A\ARISE1\node_modules\sequelize\lib\model.js:939:21)
at async Sequelize.sync (C:\Users\A\ARISE1\node_modules\sequelize\lib\sequelize.js:376:9)

(Use node --trace-warnings ...显示创建警告的位置)(节点:22136)未处理的承诺拒绝警告:未处理的承诺拒绝。此错误是由于在不带catch块的异步函数内部引发,或者由于拒绝未使用.catch()处理的承诺而引起的。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝ID:1)(节点:22136)[DEP 0018]弃用警告:不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将终止Node.js进程,并显示非零退出代码。
我试过删除docker文件mysql-image-container(从docker),但仍然无法将我的应用程序连接到本地mysql服务器。现在,如果我甚至尝试通过SQL命令行连接到我的数据库,我无法这样做,即使有正确的凭据。虽然我可以通过MySQL Workbench连接到数据库。用于build-image/运行容器的docker命令是:

docker run -p 3306:3306 --name nodejs-mysql -e MYSQL_ROOT_PASSWORD=pass -e MYSQL_DATABASE=database -d mysql:5.7

在此之前,我习惯于右键单击Dockerfile并选择构建映像选项。我没有完全理解Dockerfile的内容,所以我混合了一些来自在线源代码。
任何帮助都将不胜感激。

cld4siwp

cld4siwp1#

请分享你的代码。也可以参考下面的代码来了解如何建立连接

const { Sequelize,DataTypes } = require('sequelize');
const config={
    HOST:"localhost",// you can replace this with the url of where your server is hosted or an ip adress
    USER:"root",
    PASSWORD:"yourpassword",
    DB:"yourDb",
    dialect:"mysql",//sqlite, mariadb
    pool:{
        max:5,
        min:0,
        acquire:30000,
        idle:10000
    }

const sequelize= new Sequelize(
config.DB,
config.USER,
config.PASSWORD,
{

    host:config.HOST,
    dialect:config.dialect,
    operatorAliases:false,
    pool:{
        max:config.pool.max,
        min:config.pool.min,
        acquire:config.pool.acquire,
        idle:config.pool.idle
    }
}

)
try {
  await sequelize.authenticate();
  console.log('Connection has been established successfully.');
} catch (error) {
  console.error('Unable to connect to the database:', error);
}
vwoqyblh

vwoqyblh2#

const sequelize = new Sequelize( username, password, database, {
    host: host,
    dialect: dialect
});

而不是上面,应该是这个

const sequelize = new Sequelize(  database, username, password, {
        host: host,
        dialect: dialect
    });

相关问题