Я создаю мобильное приложение для своей компании. Все отлично работает, когда я устанавливаю приложение с компьютера, распространяемого среди людей, также работает правильно. Проблема появляется, когда я загружаю приложение из магазина Google Play после его публикации. Появляется следующая ошибка:
java.sql.SQLInvalidAuthorizationSpecException: Access denied for user 'root'@'ip' (using password: NO)
Код для подключения к базе данных выглядит следующим образом:
try {
Class.forName("org.mariadb.jdbc.Driver").newInstance();
Connection connection = DriverManager.getConnection(getString(R.string.baseurl), getString(R.string.baseuser), getString(R.string.basepass));
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
while (resultSet.next()) {
DetailsOfCatalog details = new DetailsOfCatalog();
details.setURL(resultSet.getString(1));
details.setIMGURL(resultSet.getString(2));
details.setEdition(resultSet.getString(3));
detailsOfCatalogs.add(details);
}
statement.close();
connection.close();
} catch (Exception e) {
return e.toString();
}
Я использую библиотеку для подключения к базе данных, например: MariaDB Connector / J версия 1.8. URL, логин и пароль выглядят так:
<string name="baseurl">jdbc:mysql://x:3306/mc_mobile</string>
<string name="baseuser">mc_mobile_demo</string>
<string name="basepass">xxxxx</string>
Я попытался подключиться к пользователю со всеми правами на базу данных и пользователю с правами только для чтения, в обоих случаях эта ошибка возникает, но только после публикации приложения, при установке с компьютера и отправке файла apk, оно работает правильно. Для каждого пользователя появляется ошибка с отдельным IP-адресом, поэтому предоставление разрешения пользователю с одним IP-адресом невозможно. Я добавлю, что распределенное приложение, которое не было опубликовано, корректно работает во всех сетях. Проблема не появляется, пока не будет опубликована и загружена из Goole Play.