Azure - 尝试连接到外部MySQL数据库时权限被拒绝

时间:2017-10-30 22:34:13

标签: java mysql web-services azure soap

我尝试使用Azure上发布的Web应用程序连接外部MySQL数据库。代码在Localhost上托管的Tomcat上运行得非常好,但在Azure上,所有需要连接的函数都返回错误:

SELECT REPLACE([strUrl], '/myoldurl/', '/mynewurl/') FROM [UrlRewrite]

连接功能代码是:

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

2 个答案:

答案 0 :(得分:0)

我厌倦了重现你的问题但却失败了。

在这里,我尝试创建一个java spring-boot项目来测试与Azure MySQL Database的连接。

我的代码片段:

    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();
    }

我的web.config文件:

<?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>

如果无法连接到数据库,可以按如下方式检查点:

1.不要错过设置SSL参数。

2.请设置您的天蓝网络应用的白色IP address

enter image description here

3.不要错过-Djava.net.preferIPv4Stack=true中的web.config设置。

您可以从此主题中找到更多详细信息:JavaMail API to iMail -- java.net.SocketException: Permission denied: connect

希望它对你有所帮助。

答案 1 :(得分:0)

另一种解决方案是将该 -Djava.net.preferIPv4Stack = true 添加到pom.xml文件中。

image