【发布时间】:2020-09-03 09:43:28
【问题描述】:
我已经构建了一个运行多个服务的 Docker 堆栈: 重要的: - 数据库(MariaDB) - API (NodeJS)
数据库用户初始化如下:
CREATE USER 'remote'@'%' IDENTIFIED BY '#####';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.* TO 'remote'@'%';
FLUSH PRIVILEGES;
我正在我的 Typescript 中建立 MySQL 连接,如下所示:
import ENV from "dotenv";
...
private connection = MySql.createConnection({
host: process.env.DATABASESERVER,
user: SecretStorage.getSecret('api_sql_user'),
password: SecretStorage.getSecret('api_sql_pass'),
database: process.env.DATABASE,
multipleStatements: true //TODO: Muss ausgeschalten werden
});
使用
const fs = require('fs');
export class SecretStorage{
public static getSecret(secretID:string):string{
return fs.readFileSync("/run/secrets/" + secretID);
}
}
和
export DATABASE=mydatabase
export DATABASESERVER=db
当我尝试通过 NodeJS 进行一些操作时,我得到了
Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'remote'@'10.0.35.4' (using password: YES)
但是,当我执行到 docker 容器中时,安装一个 mysql 客户端并执行
mysql -p####### -uremote -hdb mydatabase
我可以成功连接到我的数据库(并进行操作)。
有人有想法吗? 谢谢! :) 保持健康!
【问题讨论】:
标签: mysql node.js docker mariadb