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 个服务:mysqldb
和 node
(这是 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 - 客户端不支持服务器请求的身份验证协议的主要内容,如果未能解决你的问题,请参考以下文章
PHP with MySQL 8.0+错误:服务器请求客户端未知的身份验证方法[重复]
PHP与MySQL 8.0+错误:服务器请求客户端未知的身份验证方法[重复]
MySQL 8.0 请求的客户端未知的身份验证方法 (caching_sha2_password)