пожалуйста, помогите решить эту ошибку. тот же код отлично работает в окнах. но я не понимаю, почему он не работает в Linux (Ubuntu 18.04).
Следующий код:
import java.sql.*;
public class HelloWorld {
public static void main(String[] args) {
Connection con = null;
Statement st = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","root");
String sql = "insert into mytable values('[email protected]','amit1234')";
st = con.createStatement();
int x = st.executeUpdate(sql);
if(x==1) {
System.out.println("Record inserted");
}else {
System.out.println("Record not inserted");
}
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(st!=null)st.close();
if(con!=null)con.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
Выбрасывает это исключение во время выполнения кода:
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.
Sat Jul 07 12:52:40 IST 2018 WARN: Establishing SSL connection without server 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.
java.sql.SQLException: Access denied for user 'root'@'localhost'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.amitsingh.HelloWorld.main(HelloWorld.java:10)
Возможно, у пользователя root
нет достаточных прав для подключения с localhost. Вы можете проверить это, чтобы подключиться к базе данных из командной строки/оболочки. Используйте следующую команду для подключения:
mysql --host=localhost --user=root --password=root mydb
Если соединение не является успешным, тогда пользовательские учетные данные должны быть обновлены.
В целях тестирования вы можете предоставить все права пользователю. Это можно сделать после подключения к mysql.
GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'%' WITH GRANT OPTION;