Dengan dua kelas di bawah ini, saya sudah mencoba terhubung ke database MySQL. Namun, saya selalu mendapatkan kesalahan ini:
Rab 09 Des 22:46:52 CET 2015 PERINGATAN: Membuat koneksi SSL tanpa verifikasi identitas server tidak disarankan. Menurut MySQL 5.5.45+, persyaratan 5.6.26+ dan 5.7.6+ Koneksi SSL harus ditetapkan secara default jika opsi eksplisit tidak diatur. Untuk kepatuhan dengan aplikasi yang sudah ada yang tidak menggunakan SSL, properti verifikasiServerCertificate diatur ke 'false'. Anda harus menonaktifkan SSL secara eksplisit dengan mengatur useSSL = false, atau mengatur useSSL = true dan memberikan truststore untuk verifikasi sertifikat server.
Ini adalah kelas tes dengan main
metode:
public class TestDatabase {
public static void main(String[] args) {
Database db = new Database();
try {
db.connect();
} catch (Exception e) {
e.printStackTrace();
}
db.close();
}
}
Ini Database
kelasnya:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Database {
private Connection con;
public void connect() throws Exception{
if(con != null) return;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new Exception("No database");
}
String connectionURL = "jdbc:mysql://localhost:3306/Peoples";
con = DriverManager.getConnection(connectionURL, "root", "milos23");
}
public void close(){
if(con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
java
ssl
database-connection
mysql-error-1064
Milos86
sumber
sumber
Jawaban:
URL koneksi Anda akan terlihat seperti di bawah ini,
Ini akan menonaktifkan SSL dan juga menekan kesalahan SSL.
sumber
jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false
Saya menggunakan & amp; bukannya &Bagaimana dengan menggunakan SSL tetapi mematikan verifikasi server (seperti ketika dalam mode pengembangan di komputer Anda sendiri):
sumber
Sebutkan
url
seperti:Tetapi dalam konfigurasi xml ketika Anda menyebutkan
&
tanda, IDE menunjukkan kesalahan di bawah ini:Dan kemudian Anda harus secara eksplisit menggunakan
&
bukan&
untuk ditetapkan sebagai&
olehxml
setelahnya dixml
Anda harus memberikan url dalam konfigurasi xml seperti ini:sumber
Metode alternatif adalah:
sumber
Saya menemukan peringatan ini juga kemudian memperbaikinya dengan menggunakan SSL = false suffix ke string koneksi seperti contoh kode ini.
Contoh:
sumber
Default untuk memulai koneksi ke server MySQL telah diubah di masa lalu, dan (dari pandangan cepat melalui pertanyaan dan jawaban yang paling populer pada stack overflow) nilai-nilai baru menyebabkan banyak kebingungan. Yang lebih buruk adalah bahwa saran standar tampaknya menonaktifkan SSL sama sekali, yang merupakan sedikit bencana dalam pembuatan.
Sekarang, jika koneksi Anda benar-benar tidak terpapar ke jaringan (hanya hosting lokal) atau Anda bekerja di lingkungan non-produksi tanpa data nyata, maka yakin: tidak ada salahnya menonaktifkan SSL dengan memasukkan opsi
useSSL=false
.Untuk orang lain, set opsi berikut diperlukan untuk membuat SSL berfungsi dengan sertifikat dan verifikasi host:
Sebagai bonus tambahan, mengingat Anda sudah bermain dengan opsi, mudah untuk menonaktifkan protokol SSL yang lemah juga:
Contoh
Jadi sebagai contoh kerja Anda harus mengikuti langkah-langkah luas berikut:
Pertama, pastikan Anda memiliki sertifikat yang valid yang dihasilkan untuk host server MySQL, dan bahwa sertifikat CA diinstal ke host klien (jika Anda menggunakan self-signed, maka Anda mungkin perlu melakukan ini secara manual, tetapi untuk CA publik populer itu sudah ada di sana).
Selanjutnya, pastikan bahwa java keystore berisi semua sertifikat CA. Pada Debian / Ubuntu ini dicapai dengan menjalankan:
Kemudian akhirnya, perbarui string koneksi untuk menyertakan semua opsi yang diperlukan, yang pada Debian / Ubuntu akan sedikit mirip (sesuaikan seperti yang diperlukan):
Referensi: https://beansandanicechianti.blogspot.com/2019/11/mysql-ssl-configuration.html
sumber
Anda perlu menggunakan jalur mysql Anda seperti ini:
sumber
Ini tidak masalah bagi saya:
sumber
Gunakan ini untuk memecahkan masalah di sarang sementara membuat koneksi dengan MySQL
sumber
jdbc:mysql://localhost/metastore?useSSL=false&createDatabaseIfNotExist=true
. Tanpa dan itu berfungsi dengan baik.Saya menggunakan properti ini untuk hibernasi di konfigurasi xml
tanpa - serverTimezone = UTC - tidak berfungsi
sumber
Solusi Untuk memperbaikinya, tambahkan useSSL = false di akhir string koneksi MySQL:
ex.
properti aplikasi
sumber data mysql
sumber
versi baru mysql-connector membuat koneksi SSL secara default ... untuk menyelesaikannya:
Unduh versi lama mysql-connector seperti mysql-connector-java-5.0.8.zip
. . atau . . Unduh OpenSSL untuk Windows dan ikuti instruksi cara mengaturnya
sumber
Karena saya saat ini dalam mode pengembangan saya mengatur useSSL ke Tidak tidak di tomcat tetapi dalam konfigurasi server mysql. Pergi ke Mengelola Pengaturan Akses \ Kelola Koneksi Server dari meja kerja -> Memilih koneksi saya. Tab koneksi di dalam pergi ke tab SSL dan menonaktifkan pengaturan. Bekerja untukku.
sumber