如何用Java连接到远程MySQL数据库?

mlnl4t2r  于 2023-01-01  发布在  Java
关注(0)|答案(9)|浏览(179)

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

cwtwac6a

cwtwac6a1#

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

jdbc:mysql://192.168.15.25:3306/yourdatabase

确保没有防火墙阻止对端口3306的访问
此外,请确保您正在连接的用户被允许从此特定主机名进行连接。对于开发环境,使用'username'@'%'进行连接是安全的。请检查the user creation manualGRANT manual

disbfnqx

disbfnqx2#

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

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 */ }
           }
       }
   }
}
6qftjkof

6qftjkof3#

要从远程机器访问数据库,您需要给予数据库所有权限。
运行以下脚本以给予权限:将 . 上的所有权限授予用户@' %'(由'password'标识);

bprjcwpo

bprjcwpo4#

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

4bbkushb

4bbkushb5#

1.在模式'mysql'中创建一个新用户(mysql.user)在mysql工作空间“GRANT ALL ON *.* to user@'%'IDENTIFIED BY '';中运行以下代码
1.打开具有数据库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 ->的机器上的“3306”端口
1.尝试通过包含DB服务器IP的cmd上的telnet消息进行检查

a0zr77ik

a0zr77ik6#

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

az31mfrm

az31mfrm7#

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

现在的默认设置是仅侦听## localhost,而不是跳过网络,这更兼容,安全性也不差。## bind-address = 127.0.0.1

eimct9ow

eimct9ow8#

在Ubuntu上,在创建了localhost和'%'版本的用户,并为这两个版本授予了对database.tables的适当访问权限之后,我不得不注解掉/etc/mysql/mysql.conf.d/mysql.cnf中的'bind-address',并以sudo的形式重新启动mysql。

绑定地址= 127.0.0.1

13z8s7eq

13z8s7eq9#

更改数据库连接字符串中vps的IP /主机名,而不是localhost。例如,如果我的IP是193.23.127.130:

jdbc:mysql://193.23.127.130:3306/yourdatabase

然后确保你的vps防火墙允许MySQL使用3306端口。
然后转到MySQL工作台,服务器-用户和权限,创建一个帐户(在本例中为帐户:remoteUser,password:password),确保“主机匹配限制”为%(表示您可以从任何其他IP访问)x1c 0d1x
然后设置密码并授予权限,然后应用

然后可以在Java中添加以下代码以远程访问

Connection connection = DriverManager.getConnection("jdbc:mysql://193.23.127.130:3306/swing_demo", "remoteUser", "password");

相关问题