我正在尝试使用Eclipse IDE创建一个JSF应用程序。我使用远程mySQL服务器作为我的数据库。如何连接到此远程数据库以创建表并访问它们?
答案 0 :(得分:41)
只需在数据库连接字符串中提供远程计算机的IP /主机名,而不是localhost
。例如:
jdbc:mysql://192.168.15.25:3306/yourdatabase
确保没有防火墙阻止访问端口3306
此外,请确保允许您连接的用户从此特定主机名进行连接。对于开发环境,'username'@'%'
可以安全地执行此操作。查看the user creation manual和GRANT
manual。
答案 1 :(得分:9)
您需要在连接字符串中传递远程计算机的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 */ }
}
}
}
}
答案 2 :(得分:4)
要从远程计算机访问数据库,您需要为您的数据库授予所有权限。
运行以下脚本以授予权限: 在上授予所有特权。对用户@'%'通过'密码';
识别答案 3 :(得分:2)
另外,你应该确保MySQL服务器的配置(Debian上的/etc/mysql/my.cnf,/ etc / default / mysql)没有激活“skip-networking”并且没有专门绑定到环回接口(127.0.0.1),也是您想要连接的接口/ IP地址。
答案 4 :(得分:1)
在架构'mysql'(mysql.user)中创建一个新用户
在mysql工作区中运行此代码
“GRANT ALL ON . to user@'%'IDENTIFIED BY '';
在拥有数据库的机器上打开'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 ->
尝试通过包含数据库服务器IP的cmd上的telnet消息进行检查
答案 5 :(得分:1)
关闭所有打开的连接&连接到服务器侦听端口,无论是来自应用程序或客户端工具(navicat)还是运行服务器(apache或weblogic)。首先关闭所有连接,然后重启所有工具MySQL,apache等。
答案 6 :(得分:0)
在my.cnf文件中,请更改以下内容
##而不是跳过网络,现在只能监听默认值 ## localhost,它更兼容,安全性也不差。 ## bind-address = 127.0.0.1
答案 7 :(得分:0)
在Ubuntu上,创建用户的localhost版本和'%'版本,并为这两个版本授予对database.tables的适当访问权限后,我不得不注释掉/etc/mysql/mysql.conf中的'bind-address'。 d / mysql.cnf并以sudo重启mysql。