我用xampp托管了Apache服务器,并在PC1上创建了本地MYSQL数据库。
PC1已连接到NETWORK1。
我开发了简单的Java程序,该程序以这种方式连接到数据库:
static final String USERNAME="[myusername]";
static final String PASSWORD="[password]";
static final String CONN_STRING="jdbc:mysql://[myIP]:3306/[database_name]";
con=DriverManager.getConnection(CONN_STRING , USERNAME, PASSWORD);
即使我使用IP而不是'localhost'更改了链接,这在我的PC1上也可以正常工作。
在数据库中执行此命令后,它起作用了
GRANT ALL PRIVILEGES ON *.* TO [username]@[myIP] IDENTIFIED BY '[password]' WITH GRANT OPTION
因此,我尝试对PC2进行同样的操作,该PC2也存储此JAVA程序,但它已连接到另一个网络-NETWORK2。是否有可能发生-通过我的JAVA程序将PC2从外部网络连接到PC1上托管的mySQL数据库?
答案 0 :(得分:0)
当然,为什么不呢?您只需要确保可以从其他网络访问PC1
,并且必须打开必要的端口(3306
)。
您可以从PC1
ping PC2
来检查是否可行。
答案 1 :(得分:0)
您需要将bind-address
从本地主机更新为mysql服务器的IP。
找到mysql conf文件并编辑:
mysql conf文件的位置将为/etc/my.cnf
或/etc/mysql/my.cnf
或/usr/local/mysql/etc/my.cnf
bind-address = <IP address where MySql is running>
还要确保mysql-server机器的端口3306是打开的并且可以从其他PC访问。然后添加所需的特权。
答案 2 :(得分:0)
是的,您可以通过在同一LAN连接中连接两台计算机来完成此操作。在此之后,请检查安装了mysql的PC的IP地址。您只需在终端上键入ifconfig(linux)/ ipcofing(window)命令就可以找到它。确保您使用的本地IP地址(显示为192.168.1.144)不是公共地址。
在我的/usr/local/mysql/etc/my.cnf文件中使用该IP地址进行绑定,并在Java程序中使用该IP地址。您的代码将成功运行。