MYSQL 8.0 - Клиент не поддерживает протокол аутентификации, запрашиваемый сервером - PullRequest
1 голос
/ 11 мая 2019

Итак ... я знаю, что это может быть глупый вопрос, потому что его уже задавали и отвечали раньше, но я действительно хочу понять все об этом.

В настоящее время я использую docker для создания веб-сайта.В моем docker-compose у меня есть 2 службы: mysqldb и node (что является API).

Теперь .. чтобы подключиться к моей базе данных SQL с помощью API, требуется некоторое время, чтобы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 i не очень удобно.

Мой вопрос: как я могу это исправить, не используя ALTER?

Заранее спасибо.

1 Ответ

1 голос
/ 11 мая 2019

Вам нужно добавить следующее в службу MYSQL в docker-compose:

command: --default-authentication-plugin=mysql_native_password
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...