【问题标题】:Can't access jdbc mysql using my own lan ip无法使用我自己的局域网 ip 访问 jdbc mysql
【发布时间】:2016-04-14 08:21:17
【问题描述】:

我正在使用 jdbc 从 java 连接 MySql 并使用 Apache 服务器。

Class.forName("org.gjt.mm.mysql.Driver");
            con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/" + Db, dbuser, dbpasswd);
            stmt = con.createStatement();

我什至可以使用 127.0.0.1 访问它

一切都很顺利,直到我尝试用我自己的 LAN IP 地址在 java 中连接它。

我的局域网IP:192.168.0.12

所以我希望能够像这样访问它

    Class.forName("org.gjt.mm.mysql.Driver");
            con = DriverManager.getConnection(
                    "jdbc:mysql://192.168.0.12:3306/" + Db, dbuser, dbpasswd);
            stmt = con.createStatement();

但是我可以在这样的浏览器中访问它

http://192.168.0.12/phpmyadmin/

【问题讨论】:

  • 检查过mysql是否允许外部电脑连接?
  • 你得到什么错误信息?
  • PHPMyAdmin 只是一个在您的网络服务器上运行的 PHP 应用程序,它连接到 MySQ 服务器。很可能您的 MySQL 实例配置为仅绑定到 localhost。
  • @ImeshaSudasingha 我没有尝试过使用另一台电脑 192.168.0.12 和 localhost 是同一台电脑。
  • @bmarkham 它说我无法访问该表

标签: java mysql jdbc


【解决方案1】:

对于那些对解决方案感到好奇的人,我找到了一种方法。

1) 在mysql config中找到my.ini文件,查找bind_address

2) 填写您的地址以允许(在我的情况下,我允许每个主机,所以我输入 0.0.0.0)

3) 向主机添加授权,我相信有 2 个选项。首先,使用这个Sql命令,

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

其次,如果您使用 phpmyadmin,您可以转到数据库菜单上的权限选项卡,添加所有权限并授予用户/用户类型。

【讨论】:

    【解决方案2】:

    默认情况下,新安装的 MySQL 服务器只能从 localhost 访问。

    检查您的 SQL 服务器上的文件 /etc/mysql/my.cnf。如果它有“bind-address = 127.0.0.1”这样的行,请注释掉该行并重新启动 MySQL 服务器。

    您可能需要添加对远程 IP 的访问权限 - 请参阅本指南:

    http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

    【讨论】:

      【解决方案3】:

      确保您已将 mysql driver library 添加到您的类路径中。

      在 192.168.0.12 的机器上,仔细检查您的 3306 端口是否畅通。

      您没有在示例代码中包含完整的 URL,但我假设在“+ Db”之后它看起来像这样。

      String URL = "jdbc:mysql://192.168.0.12/mydatabase";
      String username = "username";
      String password = "password";
      Connection con = DriverManager.getConnection(URL, username, password);
      

      该端口不需要包含在 URL 中,因为您使用的是默认端口,但如果您想明确说明,请随意。

      我还应该提到,您能够访问http://192.168.0.12/phpmyadmin/ 的网站并不意味着您可以从其他计算机访问它。 phpmyadmin软件是访问localhost,你的电脑没有访问localhost来查看那个数据库。

      【讨论】:

      • mysql 驱动程序库已添加,我禁用了防火墙,这意味着所有端口都未阻塞(我不确定)。代码可能不像你的那么简洁,但它可以工作。我可以从另一台计算机访问192.168.0.12/phpmyadmin,我什至可以操作数据。你怎么看?
      • 你是对的。所有端口均未阻塞,并且允许传入连接。当您尝试连接 JDBC 时是否遇到任何错误?
      • 是的,它说我无法访问该表。但我可以使用 127.0.0.1 和 localhost 访问它。但不能使用我自己的 IP LAN。
      • 192.168.0.12和127.0.0.1是同一台电脑吗?
      • 您最初的问题不清楚。你能连接到 127.0.0.1 吗?
      猜你喜欢
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 2013-10-04
      相关资源
      最近更新 更多