Плагин (.jar) не может получить доступ к базе данных mysql на локальном сервере

#java #ssl #ubuntu-20.04 #mysql-8.0 #bungeecord

Вопрос:

Я пытаюсь создать сервер майнкрафт BungeeCord. Поскольку это будет автономный режим, мне нужно было добавить специальный плагин bungeecord, который сохраняет пароли пользователей в базе данных MySQL. При запуске консоль выдает мне 2 ошибки. Первый из них-это:

 07:22:34 [SEVERE] Fri Aug 13 07:22:34 UTC 2021 WARN: Establishing SSL connection without
server's identity verification is not recommended. According to MySQL 5.5.45 , 5.6.26  and
5.7.6  requirements SSL connection must be established by default if explicit option isn't
set. For compliance with existing applications not using SSL the verifyServerCertificate
property is set to 'false'. You need either to explicitly disable SSL by setting
useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
 

Я не уверен, что это очень важно. Тем не менее, я попытался отключить ssl на стороне сервера (так как я не могу редактировать плагин-у меня есть только его .jar), удалив файлы .pem и добавив skip_ssl и ssl = 0 в mysqld.cnf , и проверил, работал ли он при выполнении show global variables like '%ssl%'; , и вывод был

  ------------------------------------- ---------- 
| Variable_name                       | Value    |
 ------------------------------------- ---------- 
| admin_ssl_ca                        |          |
| admin_ssl_capath                    |          |
| admin_ssl_cert                      |          |
| admin_ssl_cipher                    |          |
| admin_ssl_crl                       |          |
| admin_ssl_crlpath                   |          |
| admin_ssl_key                       |          |
| have_openssl                        | DISABLED |
| have_ssl                            | DISABLED |
| mysqlx_ssl_ca                       |          |
| mysqlx_ssl_capath                   |          |
| mysqlx_ssl_cert                     |          |
| mysqlx_ssl_cipher                   |          |
| mysqlx_ssl_crl                      |          |
| mysqlx_ssl_crlpath                  |          |
| mysqlx_ssl_key                      |          |
| performance_schema_show_processlist | OFF      |
| ssl_ca                              |          |
| ssl_capath                          |          |
| ssl_cert                            |          |
| ssl_cipher                          |          |
| ssl_crl                             |          |
| ssl_crlpath                         |          |
| ssl_fips_mode                       | OFF      |
| ssl_key                             |          |
 ------------------------------------- ---------- 
 

К несчастью, ничего не изменилось, и 1-я ошибка все еще появляется.

Второй-это

 07:22:38 [WARNING] Exception encountered when loading plugin: MoonVKAuth
java.lang.ExceptionInInitializerError
    at b.a.m.onEnable(:5473)
    at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:265)
    at net.md_5.bungee.BungeeCord.start(BungeeCord.java:287)
    at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:67)
    at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)
Caused by: java.lang.RuntimeException: Failed to execute async query 
    at b.a.i.z.q.w.y(:34770)
    at b.a.i.z.q.w.q(:34298)
    at b.a.i.z.q.e.y(:52017)
    at b.a.i.z.q.e.y(:26050)
    at b.a.i.z.q.n.o.y(:9266)
    at b.a.g.y.<clinit>(:28073)
    ... 5 more
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Error to MySql connection - 127.0.0.1/users
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
    at ?.ez(Unknown Source)
    at j.y.m.z.j.ez(Unknown Source)
    at b.a.i.z.q.w.y(:8528)
    ... 10 more
Caused by: java.lang.RuntimeException: Error to MySql connection - 127.0.0.1/users
    at b.a.i.z.q.e.qu(:23143)
    at b.a.i.z.q.e.qs(:15109)
    at b.a.i.z.q.w.y(:33750)
    at b.a.i.z.q.w.d(:49294)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
    at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2095)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2020)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:768)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323)
    at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:428)
    at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:136)
    at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:107)
    at ?.eq(Unknown Source)
    at j.y.m.z.j.eq(Unknown Source)
    at b.a.i.z.q.e.qu(:22264)
    ... 7 more
Caused by: java.sql.SQLException: Access denied for user 'ambassador4ik'@'localhost'
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:864)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1707)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1217)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2189)
    at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2036)
    ... 24 more
 

Я думаю , что здесь самое важное Access denied for user 'ambassador4ik'@'localhost' , поэтому я проверил, могу ли я получить доступ к базе данных с этим пользователем через консоль, и я мог бы:

 ambassador4ik@instance-2:~$ mysql -uambassador4ik -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 25
Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> 
 

У меня действительно закончились идеи, и было бы здорово, если бы кто-то мог мне помочь.

Комментарии:

1. Как пользователь root , попробуйте grant all on FOO.* to 'ambassador4ik'@'localhost' ; (я не знаю, о какой базе данных идет речь)

2. Я решил вторую проблему, установив пароль root пустым. Я предполагаю, что mysql использует какое-то шифрование, которое невозможно прочитать для плагина.