【问题标题】:How to allow the desktop application to access the MySQL DB on a Microsoft server?如何允许桌面应用程序访问 Microsoft 服务器上的 MySQL 数据库?
【发布时间】:2018-06-02 03:07:19
【问题描述】:

我正在使用 Java 和 MySQL 数据库构建一个桌面应用程序。

MySQL 数据库应该连接在桌面应用程序中,存储在 Microsoft Windows Server 2012 R2 Standard 上的 MySQL 服务器上。

我在同一网络上的两台不同 PC 上安装了桌面应用程序。

(因此服务器上的数据库和客户端 PC 上的应用程序)

问题是: 桌面应用程序无法运行,因为客户端 PC 无法访问 MySQL 数据库。

我的问题是:

  • 如何允许客户端 PC 上的桌面应用程序访问 服务器上的 MySQL 数据库?

  • 我是否需要更改假定的代码 连接到 Microsoft 服务器上的数据库?

    public static Connection Connerdb()
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con=DriverManager.getConnection("jdbc:mysql://localhost/TestDB",root, " " );
            return con;
        }
        catch (ClassNotFoundException | SQLException e){
            JOptionPane.showMessageDialog(null, e);
            return null;
        }   
    } 
    

【问题讨论】:

  • 我确定这是个愚蠢的问题,但是除了您尝试过的 2 个客户端之外,您的配置是否适用于任何其他客户端?尝试连接 MySQL 的用户是否具有“创建会话”权限?
  • 其实我没有在其他电脑上试过,但我认为它不会工作。不,尝试连接到 MySQL 的用户没有“创建会话”权限。我怎么给它?
  • 请参阅下面的@MartinStraus 答案。

标签: java mysql database server database-connection


【解决方案1】:

JDBC URL 中有“localhost”。您应该使用 MySQL 主机的 IP 地址或 DNS 名称。

【讨论】:

  • 很好,我想的太大了!
  • 感谢您的帮助。但是当我尝试在客户端 PC 上运行桌面应用程序时,出现了这个错误(java.sql.SQLException:null, message from server:"Host 'pc1' is not allowed to connect to this MySQL server")
  • 这看起来更像是 MySQL 配置问题而不是客户端问题。在 MySQL 中,如果用户的标识是它连接的主机,则部分。通常,您将用户命名为 myuser@% 之类的名称,“%”表示“任何主机”。因此,该用户将能够从任何主机进行连接。但是如果用户被命名为“myuser@localhost”,它将只被允许从运行 MySQL 的同一主机进行连接,而不是从任何远程客户端(这是你的情况)。你应该在你的 MySQL 服务器中检查这个设置。
  • 谢谢。没错,用户是 root@localhost。但是如何配置 MySQL 服务器(对不起,我是新手)?
猜你喜欢
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多