
Ваш Dolphinscheduler не начнет, если вы пропустите это исправление плагина MySQL Auth Plugin
12 июня 2025 г.Описание проблемы
После развертывания кластера 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'.
Возможные причины
- MySQL Аутентификационная плагин несовместимость: MySQL 8.0 использует
caching_sha2_password
По умолчанию, в то время как старые драйверы JDBC могут только поддерживатьmysql_native_password
Полем - Несовместимая версия драйвера JDBC: используемый драйвер JDBC устарел и не поддерживает текущую версию MySQL Server.
- Неправильная конфигурация в параметрах подключения к базе данных: URL, имя пользователя или пароль в
datasource.properties
неверно. - Проблемы с разрешением имени хоста: сервер Dolphinscheduler обращается к MySQL, используя другое имя хоста или IP, что приводит к сбое разрешения.
- Конфликт конфигурации SSL: MySQL Server обеспечивает соблюдение SSL подключения, но URL -адрес соединения не имеет правильных параметров SSL.
Устранение неполадок
- Проверьте разрешения пользователя 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;
- Проверьте и обновляйте драйвер 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's
lib/
Справочник и удалите старую версию.
- Проверьте конфигурацию подключения к базе данных
Редактировать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
: Укажите часовой пояс, чтобы избежать проблем преобразования временных метров
- Проверьте сетевой подключение
Проверьте сетевое соединение с сервера Dolphinscheduler на сервер MySQL:
ping <database IP>
telnet <database IP> 3306
- Проверьте плагин аутентификации 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;
- Временно отключить брандмауэр или группы безопасности
Если брандмауэр существует, отключите его временно, чтобы проверить, вызывает ли он ограничение сети:
# 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
Проверьте исправление
- Перезапустите службы Dolphinscheduler:
sh bin/stop-all.sh
sh bin/start-all.sh
- Повторно запустите скрипт инициализации базы данных:
sh script/create-dolphinscheduler.sh
Профилактические меры
- Перед установкой убедитесь, что версия MySQL совместима с тем, что рекомендуется в документации Dolphinscheduler.
- Используйте специального пользователя базы данных (не
root
) для доступа к приложениям и ограничить его разрешение. - Регулярно резервное копирование базы данных, чтобы избежать потери данных.
- В производственных средах включите шифрование SSL и настройте более строгие политики доступа к сети.
Справочные документы
- Официальное руководство по установке Dolphinscheduler (ZH)
- MySQL Connector/J Скачать
- MySQL Управление привилегией пользователей
Оригинал