Com as duas classes abaixo, tentei conectar-me a um banco de dados MySQL. No entanto, eu sempre recebo este erro:
Qua 09 de dezembro 22:46:52 CET 2015 AVISO: O estabelecimento de uma conexão SSL sem a verificação de identidade do servidor não é recomendado. De acordo com os requisitos do MySQL 5.5.45+, 5.6.26+ e 5.7.6+, a conexão SSL deve ser estabelecida por padrão se a opção explícita não estiver configurada. Para conformidade com aplicativos existentes que não usam SSL, a propriedade confirmServerCertificate está configurada como 'false'. Você precisa desativar explicitamente o SSL configurando useSSL = false ou definir useSSL = true e fornecer armazenamento confiável para verificação de certificado do servidor.
Esta é a classe de teste com o main
método:
public class TestDatabase {
public static void main(String[] args) {
Database db = new Database();
try {
db.connect();
} catch (Exception e) {
e.printStackTrace();
}
db.close();
}
}
Esta é a Database
classe:
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
fonte
fonte
Respostas:
O URL da sua conexão deve se parecer com o abaixo,
Isso desativará o SSL e também suprimirá os erros de SSL.
fonte
jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false
usei o & amp; em vez de &Que tal usar SSL, mas desativar a verificação do servidor (como no modo de desenvolvimento em seu próprio computador):
fonte
Mencione o seguinte
url
:Mas na configuração xml quando você menciona o
&
sinal, o IDE mostra abaixo o erro:E então você tem que usar explicitamente o em
&
vez de&
ser determinado como a partir&
dexml
então,xml
você deve fornecer o URL na configuração xml como esta:fonte
Um método alternativo seria:
fonte
Também encontrei esse aviso e o corrigi usando o sufixo SSL = false na cadeia de conexão como este código de exemplo.
Exemplo:
fonte
Os padrões para iniciar uma conexão com um servidor MySQL foram alterados no passado recente e (de uma rápida olhada nas perguntas e respostas mais populares sobre o estouro de pilha), os novos valores estão causando muita confusão. O pior é que o conselho padrão parece ser desativar completamente o SSL, o que é um desastre.
Agora, se sua conexão realmente não é exposta à rede (localhost apenas) ou você está trabalhando em um ambiente de não-produção, sem dados reais, então a certeza: não há nenhum dano na desativação SSL, incluindo a opção
useSSL=false
.Para todos os outros, o seguinte conjunto de opções é necessário para que o SSL funcione com a verificação de certificado e host:
Como um bônus adicional, como você já está jogando com as opções, é simples desativar também os protocolos SSL fracos:
Exemplo
Portanto, como exemplo de trabalho, você precisará seguir as seguintes etapas gerais:
Primeiro, verifique se você possui um certificado válido gerado para o host do servidor MySQL e se o certificado CA está instalado no host do cliente (se você estiver usando autoassinatura, provavelmente precisará fazer isso manualmente, mas para o CAs públicas populares já estará lá).
Em seguida, verifique se o keystore java contém todos os certificados da CA. No Debian / Ubuntu, isso é conseguido executando:
Finalmente, atualize a cadeia de conexão para incluir todas as opções necessárias, que no Debian / Ubuntu seriam algo como (adaptar conforme necessário):
Referência: https://beansandanicechianti.blogspot.com/2019/11/mysql-ssl-configuration.html
fonte
você precisa usar seu caminho mysql assim:
fonte
Isso foi bom para mim:
fonte
Use isso para resolver o problema no hive enquanto faz conexão com o MySQL
fonte
jdbc:mysql://localhost/metastore?useSSL=false&createDatabaseIfNotExist=true
. Sem o e funciona bem.Eu uso essa propriedade para hibernar no config xml
sem - serverTimezone = UTC - não funciona
fonte
Solução Para corrigi-lo, anexe um useSSL = false no final da cadeia de conexão do MySQL:
ex.
application.properties
fonte de dados mysql
fonte
as novas versões do mysql-connector estabelecem conexão SSL por padrão ... para resolvê-lo:
Faça o download da versão mais antiga do mysql-connector, como mysql-connector-java-5.0.8.zip
. . ou . Faça o download do OpenSSL para Windows e siga as instruções de como configurá-lo
fonte
Como atualmente estou no modo de desenvolvimento, defino useSSL como No, não no tomcat, mas nas configurações do servidor mysql. Foi gerenciar configurações de acesso \ Gerenciar conexões do servidor no ambiente de trabalho -> Selecionou minha conexão. A guia Conexão interna foi para a guia SSL e desativou as configurações. Trabalhou para mim.
fonte