MYSQL 8.0-客户端不支持服务器请求的身份验证协议

时间:2019-05-11 01:19:02

标签: mysql node.js docker docker-compose

所以..我知道这可能是一个愚蠢的问题,因为之前曾有人问过并回答过这个问题,但我真的很想了解有关它的一切。

当前,我使用docker建立一个网站。在我的docker-compose中,我有2个服务:mysqldbnode(这是api)。

现在..为了使用api连接到我的sql数据库,需要一些时间才能启动MySql。.为此,我使用了execute.sh脚本,该脚本使我能够手动运行它。除此之外,我还有一个手动运行的db_schema.js,它会在数据库中创建表。

这就是我的联系方式:

const mysql = require('mysql');
const connection = mysql.createConnection({
    host: "mysqldb",
    user: "root",
    password: "password",
    database: "database",
});

connection.connect();

let createScoresTable = "CREATE TABLE IF NOT EXISTS scores (" +
    "team_a VARCHAR(100) NOT NULL," +
    "team_a_score INT UNSIGNED NOT NULL," +
    "team_b_score INT UNSIGNED NOT NULL," +
    "team_b VARCHAR(100)" +
    ")"

connection.query(createScoresTable)

connection.end();

但是正如标题所述,我在身份验证方面遇到问题。

我知道我可以通过输入数据库并运行ALTER命令来手动完成此操作,但是每次执行docker-compose down时都无法运行它。

我的问题是如何不使用ALTER来解决此问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要在docker-compose的MYSQL服务中添加以下内容:

command: --default-authentication-plugin=mysql_native_password