Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java连接到远程MySQL数据库?_Java_Mysql_Eclipse_Jdbc - Fatal编程技术网

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

如何使用Java连接到远程MySQL数据库?,java,mysql,eclipse,jdbc,Java,Mysql,Eclipse,Jdbc,我正在尝试使用EclipseIDE创建一个JSF应用程序。我使用一个远程mySQL服务器作为我的数据库。如何连接到此远程数据库以创建表并访问它们?只需在数据库连接字符串中提供远程计算机的IP/主机名,而不是localhost。例如: jdbc:mysql://192.168.15.25:3306/yourdatabase 确保没有防火墙阻止对端口的访问3306 此外,请确保允许您连接的用户从此特定主机名进行连接。对于开发环境,通过'username'@'%进行此操作是安全的。检查并输入。您需要

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

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

jdbc:mysql://192.168.15.25:3306/yourdatabase
确保没有防火墙阻止对端口的访问
3306


此外,请确保允许您连接的用户从此特定主机名进行连接。对于开发环境,通过
'username'@'%
进行此操作是安全的。检查并输入。

您需要在连接字符串中传递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 */ }
           }
       }
   }
}

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

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

运行以下脚本以授予权限:
授予在上的所有特权。发送到由“密码”标识的用户@“%”

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

##现在,默认设置是只在网络上侦听,而不是跳过网络 ##本地主机,它更兼容,而且安全性也不低。 ##绑定地址=127.0.0.1

  • 在模式“mysql”(mysql.user)中创建新用户 在mysql工作空间中运行此代码
    
    将上的所有权限授予由“”标识的用户@“%”;
    

  • 打开拥有数据库的机器上的“3306”端口。
    
    控制面板->
    Windows防火墙->
    高级设置->
    入站规则->
    新规则->
    端口->
    下一步->
    TCP&将端口设置为3306->
    下一步->
    下一步->
    下一步->
    填写名称和说明->
    完成->
    

  • 尝试在cmd上通过telnet消息进行检查,包括DB服务器的IP


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

    在Ubuntu上,创建用户的localhost和“%”版本,并授予对这两个版本的database.tables的适当访问权限后,我必须注释掉/etc/MySQL/MySQL.conf.d/MySQL.cnf中的“bind address”,并以sudo的身份重新启动MySQL


    bind address=127.0.0.1此外,请确保在MySQL架构中向该主机和用户授予适当的权限。@Angeline:请接受此答案,因为这是问题的正确答案。请确保:(1)您电脑的IP地址是允许远程连接到数据库服务器的IP地址之一。(2)您的数据库名称(如URL中所示)将是该数据库的完整限定名称。因此,如果实际数据库名为“web_shop”,并且它保存在名为“angelazza”的托管帐户上,则您的数据库的完整限定名称为“angelazza_web_shop”。以及(3)将上载到数据库服务器的.sql文件中的所有引用(假设您脱机开发数据库并将其上载/粘贴到服务器)从“web_shop”更改为“angelazza_web_shop”以避免错误。我替换了本地主机而不是远程计算机地址。以下代码:
    String url=“jdbc:mysql://172.18.227.237/struts2";conn=DriverManager.getConnection(url,“root”,“admin”)
    ;但是现在我得到了错误,`com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:user'root'@'172.20.169.174'对数据库'struts2'的访问被拒绝。我已经获得了对mysql服务器的远程访问权。用这个来参加聚会有点晚,但是:替换“jdbc:mysql://172.18.227.237/struts2“with”jdbc:mysql://172.18.227.237:3306/struts2“(注意端口号)。以防我身后的人犯下同样的错误。无论出于何种目的或原因,您永远无法使用localhost或127.0.0.1连接到远程计算机。记住,在进行此更改后,通过
    sudo/etc/init.d/mysql restart
    在远程计算机上重新启动mysql。以及NAT后的端口转发!我理解得更好第二个答案是: