Я запустил короткий SHOW GRANTS;
с помощью команды mysql
, которая может подключиться к базе данных. Вывод дал мне это:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD 'nonono' REQUIRE SSL WITH GRANT OPTION
Соответствующая часть REQUIRE SSL
: соединения с этим сервером должны быть зашифрованы.
Когда я проверил файлы в /etc/my.cnf.d/
, я нашел файл, содержащий (среди прочего) эти строки:
[server]
ssl=1
ssl-cert=/path/to/certificate/cert.pem
Путем поиска в гугле я нашел эту ссылку, которая описывает, как настроить драйвер JDB C для использования ssl. Это также объясняет, почему вам, возможно, стоит подумать дважды, прежде чем устанавливать trustServerCertificate
на true
.
Мой spring.datasource.url
теперь выглядит следующим образом:
jdbc:mariadb://server.company.domain:3306/dbname?useSSL=true&trustServerCertificate=true&serverSslCert=/path/to/certificate/cert.pem
Короче говоря: Access denied for user
не рассказывает полную историю. Это заставляет вас думать, что ваш пароль может быть неправильным, но вам отказали по другим причинам.