如何用java连接远程mysql数据库?

我正在尝试使用Eclipse IDE创建一个JSF应用程序。 我使用远程mySQL服务器作为我的数据库。 如何连接到此远程数据库以创建表并访问它们?

只需在数据库连接字符串中提供远程计算机的IP /主机名,而不是localhost 。 例如:

 jdbc:mysql://192.168.15.25:3306/yourdatabase 

确保没有防火墙阻止访问端口3306

此外,请确保允许您连接的用户从此特定主机名进行连接。 对于开发环境,可以通过'username'@'%'来安全地完成此操作。 查看用户创建手册和GRANT手册 。

您需要在连接字符串中传递rempote机器的IP /主机名。

 import java.sql.*; import javax.sql.*; public class Connect { public static void main (String[] args) { Connection conn = null; try { String url = "jdbc:mysql://localhost:3306/mydb"; Class.forName ("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection (url,"root"," "); System.out.println ("Database connection established"); } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close (); System.out.println ("Database connection terminated"); } catch (Exception e) { /* ignore close errors */ } } } } } 

要从远程计算机访问数据库,您需要为您的数据库授予所有权限。

运行以下脚本以授予权限:GRANT ALL PRIVILEGES ON 给用户@’%’IDENTIFIED BY’密码’;

另外,你应该确保MySQL服务器的配置(Debian上的/etc/mysql/my.cnf,/ etc / default / mysql)没有激活“skip-networking”并且没有专门绑定到loopback接口(127.0) .0.1)还要连接到的接口/ IP地址。

  1. 在模式’mysql’中创建一个新用户(mysql.user)在你的mysql工作空间中运行此代码“GRANT ALL ON . to user@'%'IDENTIFIED BY ''; “GRANT ALL ON . to user@'%'IDENTIFIED BY '';

  2. 在具有数据库的机器上打开’3306’端口。 Control Panel -> Windows Firewall -> Advance Settings -> Inbound Rules -> New Rule -> Port -> Next -> TCP & set port as 3306 -> Next -> Next -> Next -> Fill Name and Description -> Finish ->

  3. 尝试通过cmd上的telnet msg检查,包括DB服务器的IP

关闭所有打开并连接到服务器侦听端口的连接,无论它来自应用程序或客户端工具(navicat)还是正在运行的服务器(apache或weblogic)。 首先关闭所有连接然后重启所有工具MySQL,apache等。

在my.cnf文件中,请更改以下内容

##而不是跳过网络,默认情况下现在只能在## localhost上侦听,它更兼容并且安全性也不低。 ## bind-address = 127.0.0.1