mariadb-java-client throws access denied on mysql 8.0, but works on mysql 5.6 So I wonder if mariadb client is compatible with mysql 8.0
in mysql, test users are set limit to hosts machine = %
even tested on mysql 8.0's machine, same access denied error.
Caused by: java.sql.SQLException: Access denied for user 'user1'@'192.168.238.1' (using password: NO)
Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
Connection connection = DriverManager.getConnection("jdbc:mariadb://192.168.0.2:3306/test", "user1", "admin@123");
Statement stmt = connection.createStatement();
stmt.executeUpdate("CREATE TABLE a (id int not null primary key, value varchar(20))");
stmt.executeUpdate("DROP TABLE a");
stmt.close();
connection.close();
Same user name and password on mysql 5.6 and 8.0
Succeeded: 'mariadb-java-client', version: '2.3.0', mysql 5.6
Failed: 'mariadb-java-client', version: '2.3.0', mysql 8.0
Succeeded: 'mysql-connector-java', version: '8.0.13' mysql 8.0 (jdbc:mysql://....)
To resolve the error, you must create a user with the following command: mysql> GRANT ALL ON *. * to user_name@localhost IDENTIFIED BY 'password'; Replace user_name with the user's username and password with the user's password.
the server is either not running, or not running on the specified port, socket or pipe. Make sure you are using the correct host, port, pipe, socket and protocol options, or alternatively, see Getting, Installing and Upgrading MariaDB, Starting and Stopping MariaDB or Troubleshooting Installation Issues.
Use the ALTER USER command and change the authentication method to log into MySQL as root: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'insert_password'; This command changes the password for the user root and sets the authentication method to mysql_native_password.
MySQL 8 uses caching_sha2_password rather than mysql_native_password as of MySQL 5.7 (and MariaDB).
"caching_sha2_password, it is as of MySQL 8.0 the preferred authentication plugin, and is also the default authentication plugin rather than mysql_native_password. This change affects both the server and the libmysqlclient client library:"
https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
MariaDB's Java Connector does not yet implement this, but has a task assigned:
https://jira.mariadb.org/browse/CONJ-663
In order to connect to MySQL 8, you will have to use the Oracle connector, another connector that supports the change, or wait for MariaDB to implement.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With