【发布时间】:2021-01-01 17:00:23
【问题描述】:
当我尝试从 nodeJS API 查询我的 MySQL 数据库时,我有一个奇怪的行为。 我使用以下代码在节点上定义了一个到 mysql 的连接池
const mysql = require('mysql2')
const pool = mysql.createPool({
host: process.env.DB_HOST,
user: 'mydb.user',
database: process.env.DB_DB,
password: process.env.DB_PWD,
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0,
multipleStatements: true
}).promise()
在此之前,我使用的是在 .env 文件中定义的另一个名为 mydb.owner 的用户。
当我执行查询时,出现以下错误
Access denied for user 'mydb.owner'@'localhost' to database 'mydb'
那不是我配置的用户,那是旧的。
如果我查看 Mysql 连接,我可以看到池的用户是正确的:
show processlist;
返回
Id User Host db
6 root localhost:37752 mydb
9 mydb.user localhost:38102 mydb
似乎我没有从其他地方定义任何环境变量:
echo $DB_USER
什么都不返回。
用户似乎拥有必要的权限:
SHOW GRANTS FOR 'mydb.user'@'localhost';
GRANT USAGE ON *.* TO 'mydb.user'@'localhost'
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `mydb`.* TO 'mydb.user'@'localhost' WITH GRANT OPTION
我不明白为什么 mysql2 会返回一个关于我的旧用户 mydb.owner 的错误。
【问题讨论】:
标签: javascript mysql node.js