Описание проблемы

После развертывания кластера Dolphinscheduler с использованием сценария развертывания одного клика в соответствии с производственным руководством, страница для входа в веб-консоль может быть открыта, но учетная запись по умолчанию не могла войти в систему, несмотря ни на что. Я попытался очистить поле пользователя входа в базу данных и обнаружил, что в базе данных не было соответствующего поля пользователя. Затем, пытаясь инициализировать базу данных, используя сценарий инициализации Dolphinscheduler, подключение к базе данных не удалось.

Сообщение об ошибке:

    Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
16:16:08.294 [main] ERROR com.alibaba.druid.pool.DruidDataSource - init datasource error, url: jdbc:mysql://<database IP>:3306/ifrsdb?characterEncoding=UTF-8&allowMultiQueries=true
java.sql.SQLException: Access denied for user 'root'@'<hostname>' (using password: YES)
...
16:16:08.300 [main] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited
16:16:08.300 [main] ERROR org.apache.dolphinscheduler.dao.upgrade.UpgradeDao - Access denied for user 'root'@'<hostname>' (using password: YES)
java.sql.SQLException: Access denied for user 'root'@'<hostname>' (using password: YES)
...
16:16:08.301 [main] ERROR org.apache.dolphinscheduler.dao.upgrade.shell.CreateDolphinScheduler - create DolphinScheduler failed

Процесс устранения неполадок

  • Во -первых, выполненные обычные проверки, такие как сеть, брандмауэр и доступность услуг, чтобы гарантировать, что все нормально
  • Проверено авторизация базы данных; войти в базу данных с сервера, используяmysqlКоманда работала нормально, исключая проблемы с базой данных
  • Проверил, соответствовал ли разъем базы данных версии базы данных; Тот же соединитель использовался, как в других производственных средах, исключая проблемы разъемов
  • Проверенные журналы запуска и собранные сообщения об ошибках
  • Проверенные файлы конфигурации, чтобы гарантировать, что значения вручную были правильными и полезными для использования

Ключевой момент исправления

А<installation directory>/conf/datasource.propertiesФайл хранит информацию об подключении к базе данных:

spring.datasource.username=root
spring.datasource.password=<your password>  ## this is where the issue was

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

Устранение неполадок в памяти: сбой аутентификации базы данных во время установки Dolphinscheduler

Описание проблемы

При установке Dolphinscheduler и выполнении сценария инициализации базы данных (напримерcreate-dolphinscheduler.sh), произошла следующая ошибка:

ERROR org.apache.dolphinscheduler.dao.upgrade.UpgradeDao - Access denied for user 'root'@'<hostname>' (using password: YES)
java.sql.SQLException: Access denied for user 'root'@'<hostname>' (using password: YES)

Хотя пользователю root был предоставлен доступ от любого хоста, использующегоGRANT ALL PRIVILEGES ON *.* TO 'root'@'%', ошибка сохранилась. Между тем, журнал показал предупреждение о том, как MySQL Direcation предупреждение:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.

Возможные причины

  1. MySQL Аутентификационная плагин несовместимость: MySQL 8.0 используетcaching_sha2_passwordПо умолчанию, в то время как старые драйверы JDBC могут только поддерживатьmysql_native_passwordПолем
  2. Несовместимая версия драйвера JDBC: используемый драйвер JDBC устарел и не поддерживает текущую версию MySQL Server.
  3. Неправильная конфигурация в параметрах подключения к базе данных: URL, имя пользователя или пароль вdatasource.propertiesневерно.
  4. Проблемы с разрешением имени хоста: сервер Dolphinscheduler обращается к MySQL, используя другое имя хоста или IP, что приводит к сбое разрешения.
  5. Конфликт конфигурации SSL: MySQL Server обеспечивает соблюдение SSL подключения, но URL -адрес соединения не имеет правильных параметров SSL.

Устранение неполадок

  1. Проверьте разрешения пользователя MySQL

Убедитесь, чтоrootПользователь действительно имеет доступ от любого хоста:

-- View root user permissions
SHOW GRANTS FOR 'root'@'%';

-- If insufficient, re-grant (replace with actual password)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  1. Проверьте и обновляйте драйвер MySQL JDBC

Убедитесь, что версия драйвера JDBC соответствует версии MySQL Server:

  • Проверьте версию MySQL:
mysql -V
  • Загрузите соответствующую версию драйвера:
MySQL 5.x: Recommended - mysql-connector-java-5.1.47.jar
MySQL 8.x: Required - mysql-connector-java-8.0.x.jar
  • Замените файл драйвера: скопируйте загруженный файл JAR в Dolphinscheduler'slib/Справочник и удалите старую версию.
  1. Проверьте конфигурацию подключения к базе данных

Редактироватьconf/datasource.properties(для Dolphinscheduler 2.x) илиconf/common.properties(Для Dolphinscheduler 3.x), обеспечивая правильные параметры:

spring.datasource.url=jdbc:mysql://<database IP>:3306/ifrsdb?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=<your password>

Описания параметров ключа:

  • useSSL=false: Отключить SSL (для тестирования средств)
  • allowPublicKeyRetrieval=true: Позвольте клиенту получить открытый ключ (требуется для MySQL 8.X)
  • serverTimezone: Укажите часовой пояс, чтобы избежать проблем преобразования временных метров
  1. Проверьте сетевой подключение

Проверьте сетевое соединение с сервера Dolphinscheduler на сервер MySQL:

ping <database IP>
telnet <database IP> 3306
  1. Проверьте плагин аутентификации MySQL

Для MySQL 8.X убедитесь, чтоrootплагин аутентификации пользователяmysql_native_password:

SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

-- If the plugin is caching_sha2_password, change it to mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;
  1. Временно отключить брандмауэр или группы безопасности

Если брандмауэр существует, отключите его временно, чтобы проверить, вызывает ли он ограничение сети:

# CentOS/RHEL
systemctl stop firewalld

# Ubuntu/Debian
ufw disable

Примечание: Обязательно повторно установите брандмауэр после тестирования и настройки соответствующих правил доступа.

Общая обработка ошибок

  • Ошибка: Loading class 'com.mysql.jdbc.Driver'
    • Причина: Уличное имя класса драйвера используется
    • Решение: Обновить до MySQL Connector/J 8.0+ и убедитесь, что не старого драйвера нет вlib/каталог
  • Ошибка: Public Key Retrieval is not allowed
    • Причина: Mysql 8.x требует поиска ключей, но URL не хватает конфигурации
    • Решение: ДобавлятьallowPublicKeyRetrieval=trueк URL
  • Ошибка: The server time zone value 'XXX' is unrecognized
    • Причина: Часовой пояс не настроен правильно
    • Решение: ДобавлятьserverTimezone=Asia/Shanghai(или ваш фактический часовой пояс) к URL

Проверьте исправление

  1. Перезапустите службы Dolphinscheduler:
sh bin/stop-all.sh
sh bin/start-all.sh
  1. Повторно запустите скрипт инициализации базы данных:
sh script/create-dolphinscheduler.sh

Профилактические меры

  1. Перед установкой убедитесь, что версия MySQL совместима с тем, что рекомендуется в документации Dolphinscheduler.
  2. Используйте специального пользователя базы данных (неroot) для доступа к приложениям и ограничить его разрешение.
  3. Регулярно резервное копирование базы данных, чтобы избежать потери данных.
  4. В производственных средах включите шифрование SSL и настройте более строгие политики доступа к сети.

Справочные документы

  • Официальное руководство по установке Dolphinscheduler (ZH)
  • MySQL Connector/J Скачать
  • MySQL Управление привилегией пользователей