Я пытался запустить MySQL независимо. Это один из многих сервисов проекта с открытым исходным кодом, который я пытаюсь запустить. Я узнал, какая часть вызывает проблемы, это «--default-authentication-plugin=mysql_native_password». Итак, этот docker-compose.yml не работает:
db:
image: mysql:8
restart: always
command: --default-authentication-plugin=mysql_native_password --sql_mode = "" --skip-name-resolve --tls-version = ""
environment:
MYSQL_ROOT_PASSWORD: ${MASTER_MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MASTER_MYSQL_DATABASE}
MYSQL_USER: ${MASTER_MYSQL_USER}
MYSQL_PASSWORD: ${MASTER_MYSQL_PASSWORD}
Это дает мне эту ошибку:
/workspaces/cron-job.org (master) $ docker compose up
WARN[0000] Found orphan containers ([cron-joborg-mysql-1]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
[+] Running 2/2
✔ Network cron-joborg_default Created 0.1s
✔ Container cron-joborg-db-1 Created 0.2s
Attaching to db-1
db-1 | 2024-06-06 03:57:28+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.4.0-1.el9 started.
db-1 | 2024-06-06 03:57:28+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
db-1 | 2024-06-06 03:57:28+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.4.0-1.el9 started.
db-1 | 2024-06-06 03:57:28+00:00 [Note] [Entrypoint]: Initializing database files
db-1 | 2024-06-06T03:57:28.550651Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
db-1 | 2024-06-06T03:57:28.551801Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.4.0) initializing of server in progress as process 80
db-1 | 2024-06-06T03:57:28.572331Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
db-1 | 2024-06-06T03:57:29.694256Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
db-1 | 2024-06-06T03:57:35.532272Z 0 [Warning] [MY-013595] [Server] Failed to initialize TLS for channel: mysql_main. See below for the description of exact issue.
db-1 | 2024-06-06T03:57:35.532301Z 0 [Warning] [MY-010069] [Server] Failed to set up SSL because of the following SSL library error: TLS version is invalid
db-1 | 2024-06-06T03:57:35.688029Z 0 [ERROR] [MY-000067] [Server] unknown variable 'default-authentication-plugin=mysql_native_password'.
db-1 | 2024-06-06T03:57:35.688442Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
db-1 | 2024-06-06T03:57:35.688460Z 0 [ERROR] [MY-010119] [Server] Aborting
db-1 | 2024-06-06T03:57:37.256251Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
db-1 exited with code 0
Я пытался найти ошибки одну за другой, но не смог их исправить. Потратил на это 1,5 часа. Я попробовал реализовать этот ответ: https://stackoverflow.com/a/50130973/16345931
Но с заменой CONTAINER_ID на «docker exec -it CONTAINER_ID bash» я вижу приглашение «пароль:», пока не наберу второй символ, а затем он вернется в командный режим. Я нашел CONTAINER_ID, используя docker ps ofc.
Эта конфигурация работает отлично:
db:
image: mysql:8
restart: always
command: --sql_mode = "" --skip-name-resolve --tls-version = ""
environment:
MYSQL_ROOT_PASSWORD: ${MASTER_MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MASTER_MYSQL_DATABASE}
MYSQL_USER: ${MASTER_MYSQL_USER}
MYSQL_PASSWORD: ${MASTER_MYSQL_PASSWORD}
Я только что нашел это, но еще не пробовал: «Начиная с MySQL 8.0, caching_sha2_password является как предпочтительным, так и плагином аутентификации по умолчанию». - MySQL Server 8.0.12 — для новых пользователей необходимо указать плагин аутентификации
Это верно?
Может ли кто-нибудь попробовать запустить файл компоновки Docker в кодовом пространстве GitHub? И необходим ли «--default-authentication-plugin=mysql_native_password» для работы MySQL? Помогите, я потратил на это слишком много времени.
@user1191247 user1191247 Если изображение mysql:8, разве это не 8.0?
Ваши журналы показывают MySQL Server 8.4.0-1.el9
image: mysql:8 относится к последней версии 8.x. Если вам нужна последняя версия 8.0 (на данный момент 8.0.37), вам следует использовать image: mysql:8.0.
Я обнаружил проблему с последней версией MySQL, из-за которой «-default-authentication-plugin» отключен по умолчанию с прошлого месяца: github.com/docker-library/mysql/issues/1048






Как указано в руководстве MySQL по плагину default-authentication-plugin:
Из-за этой уменьшенной роли default_authentication_plugin устарел с MySQL 8.0.27 и подлежит удалению в будущей версии MySQL.
Эта серверная переменная была удалена из версии 8.4, поэтому она не нужна.
В будущем, пожалуйста, задавайте такие вопросы на дочернем сайте SO DBA, поскольку он не имеет ничего общего с программированием или разработкой ПО, а только с внутренними операциями MySQL!
В версии 8.4 плагин по умолчанию отключен — dev.mysql.com/doc/refman/8.4/en/…