2017-10-30 1 views
0

Ich versuche, mich mit der externen MySQL-Datenbank mit der auf Azure veröffentlichten Webanwendung zu verbinden. Code arbeitet völlig in Ordnung, auf Tomcat auf Localhost gehostet, sondern auf Azure alle Funktionen erfordern Verbindung Rückkehr mit Fehlern:Azure - Zugriff verweigert, wenn versucht wird, eine Verbindung zur externen MySQL-Datenbank herzustellen

Exception: java.net.SocketException: Permission denied: connect Message: ; nested exception is: java.net.SocketException: Permission denied: connect  

Verbindungsfunktion Code lautet:

private static String hostName = "sql11.freesqldatabase.com"; 
private static String dbName = "xxxx"; 
private static String user = "xxxx"; 
private static String password = "xxxx"; 
private static String portNumber = "xxxx"; 
private Connection connect() { 
    String url ="jdbc:mysql://"+hostName+":"+portNumber+"/"+dbName+"?user="+user+"&password="+password; 
    Connection conn = null; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
     } catch (ClassNotFoundException e1) { 
      e1.printStackTrace(); 
     } 
     try { 
      conn = DriverManager.getConnection(url); 
     } catch (SQLException e) { 
      System.out.println(e.getMessage()); 
      e.printStackTrace(); 
     } 
    return conn; 
} 
+0

Verwenden Sie Azure Database für MySQL? –

+0

Ich habe sowohl mit Azure Database als auch mit Freesqldatabase versucht - beides funktioniert tadellos, während es auf dem localhost tomcat server ausgeführt wird, aber wenn es auf Azure Server veröffentlicht wird - es zeigt diesen Fehler an – obirek999

Antwort

0

ich müde Ihr Problem zu reproduzieren, scheiterte aber.

Hier habe ich versucht, ein Java spring-boot Projekt zu erstellen, um die Verbindung mit Azure MySQL Database zu testen.

Snippet meiner Code:

private static String hostName = "<your host name>"; 
    private static String dbName = "sys"; 
    private static String user = "<user name>"; 
    private static String password = "password"; 
    private static String portNumber = "3306"; 

    @RequestMapping("/hello") 
    public String index() throws SQLException { 
     Connection conn = null; 
     try { 
      Class.forName("com.mysql.cj.jdbc.Driver"); 
     } catch (ClassNotFoundException e1) { 
      e1.printStackTrace(); 
     } 
     try { 
      String url = "jdbc:mysql://"+hostName+":"+portNumber+"/"+dbName+"?verifyServerCertificate=true&useSSL=true&requireSSL=false&serverTimezone=UTC"; 
      conn = DriverManager.getConnection(url, user, password); 

     } catch (SQLException e) { 
      System.out.println("error!!!!"); 
      System.out.println(e.getMessage()); 
      e.printStackTrace(); 
      return e.getMessage(); 
     } 
     return conn.getCatalog(); 
    } 

Meine web.config-Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" /> 
    </handlers> 
    <httpPlatform processPath="%JAVA_HOME%\bin\java.exe" 
     arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\demo-0.0.1-SNAPSHOT.jar&quot;"> 
    </httpPlatform> 
    </system.webServer> 
</configuration> 

Sie Punkte überprüfen könnten, wie unten, wenn Sie keine Verbindung herstellen können, um Ihre Datenbank:

1.Verpassen Sie nicht die SSL-Parameter.

2.Bitte setzen Sie die weiße IP address Ihrer azurblauen Web-App.

enter image description here

3. Nicht verpassen -Djava.net.preferIPv4Stack=true Einstellung Ihrer web.config.

Sie könnten mehr Details aus diesem Thread finden: JavaMail API to iMail -- java.net.SocketException: Permission denied: connect

Hoffe, dass es Ihnen hilft.

+0

Ich habe ein Problem mit der Anwendung auf der Azure-Plattform. nicht mit Verbindung zu Azure MySQL Datenbank .. – obirek999

+0

@ obirek999 Laut Ihrem Beitrag scheint es, dass Ihre Web-App mit db perfekt verbindet, aber nicht auf azurblauen Plattform. Also, ich habe vorgeschlagen, dass Sie web.config oder Einstellungen Ihrer Web-App auf azurblau in meiner Antwort überprüfen. –

Verwandte Themen