运行本地NodeJS应用程序无法连接到本地运行的MySQL Docker容器

zu0ti5jz  于 2022-12-11  发布在  Docker
关注(0)|答案(1)|浏览(153)

我在我的主机上运行了一个使用docker-compose的SQL docker容器。

mysql -h 127.0.0.1 -P 3306 -u root -p

这个很好用但是...
当我在我的主机中尝试使用我的NodeJS应用程序连接到它时,它失败了-

client: 'mysql2',
            connection: dbSsl ? async () => {
                const token  = await rds.getAuthPluginPromise();
                return {
                    host : 127.0.0.1,
                    port : 3306,
                    user : root,
                    ssl: "",
                    database : "myapp",
                    multipleStatements: true,
                    authPlugins: {
                        mysql_clear_password: () => () => {
                            return Buffer.from(token + '\0')
                        }
                    }
                };
            } : databaseUrl,
            pool: {min: dbPoolMin, max: dbPoolMax, propagateCreateError: false},
            searchPath: "myapp",
            requestTimeout: 30000,
        });```

Docker 组成
第一次

bqf10yzr

bqf10yzr1#

也许您的容器中缺少一些环境变量。请尝试添加以下内容:

mysql:
  image: arm64v8/mysql:oracle
  container_name: mysql
  restart: always
  ports:
    - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: "password"
    MYSQL_DATABASE: "myapp"               ### <-- you need this one at least

此外,尝试在代码中添加更多调试功能。在服务器启动后,立即尝试以下操作:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "password",
  database : "myapp"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
});

如果这样做有效,则调试您在问题中发布的代码。

相关问题