如何使用Java连接到远程MySQL数据库?
我正在尝试使用EclipseIDE创建一个JSF应用程序。我使用一个远程mySQL服务器作为我的数据库。如何连接到此远程数据库以创建表并访问它们?只需在数据库连接字符串中提供远程计算机的IP/主机名,而不是如何使用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'@'%进行此操作是安全的。检查并输入。您需要
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
将上的所有权限授予由“”标识的用户@“%”;
控制面板->
Windows防火墙->
高级设置->
入站规则->
新规则->
端口->
下一步->
TCP&将端口设置为3306->
下一步->
下一步->
下一步->
填写名称和说明->
完成->
关闭所有打开并连接到服务器侦听端口的连接,无论是来自应用程序或客户端工具(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后的端口转发!我理解得更好第二个答案是: