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

Posted

技术标签:

【中文标题】MYSQL 8.0 - 客户端不支持服务器请求的身份验证协议【英文标题】:MYSQL 8.0 - Client does not support authentication protocol requested by server 【发布时间】:2019-09-28 21:16:50 【问题描述】:

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

目前我使用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】:

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

command: --default-authentication-plugin=mysql_native_password

【讨论】:

谢谢,它成功了。我知道插件有一些东西,但我不知道如何更改这个插件。再次感谢。

以上是关于MYSQL 8.0 - 客户端不支持服务器请求的身份验证协议的主要内容,如果未能解决你的问题,请参考以下文章

mysql 8.0

PHP with MySQL 8.0+错误:服务器请求客户端未知的身份验证方法[重复]

PHP与MySQL 8.0+错误:服务器请求客户端未知的身份验证方法[重复]

MySQL 8.0 请求的客户端未知的身份验证方法 (caching_sha2_password)

Node JS和mysql不连接(客户端不支持服务器请求的认证协议考虑升级mysql客户端)

errno: 1251, sqlMessage: '客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端