MYSQL为啥用IP地址无法连接
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL为啥用IP地址无法连接相关的知识,希望对你有一定的参考价值。
应该是没有添加允许 非 locathost 连接过来的用户当你用 127.0.0.1 去连接你的mysql的时候,连接来源是 127.0.0.1,也就是 localhost
但是如果你用 本机ip 去连接mysql,那么连接来源就是你本机的ip,而不是localhost~~即使你在本机发起的连接请求~ 参考技术A al, formed naturally a great part of the co
Mysql与本地主机连接正常但无法与IP地址连接
【中文标题】Mysql与本地主机连接正常但无法与IP地址连接【英文标题】:Mysql connecting ok with local host but not connecting with ip address 【发布时间】:2019-04-25 18:26:42 【问题描述】:我有一个 java 程序,它从 MySQL 获取它的信息,当我使用 localhost 连接到它时它工作正常,但每当我将 ipaddress 放入它时它就不起作用。 我的连接代码和异常如下。
package connection;
import java.net.InetAddress;
import java.sql.Connection;
import java.sql.DriverManager;
/**
*
* @author rpsal
*/
public class DBConnection
public static Connection connect()//working on local host
Connection conn = null;
try
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://"+getIpAddress()+"/ChatMaster";
conn = DriverManager.getConnection(url, "root", "");
catch (Exception e)
System.out.println("Exception in connect" + e);
return conn;
public static String getIpAddress() throws Exception
InetAddress inetAddress = InetAddress.getLocalHost();
return inetAddress.getHostAddress();
当我使用String url = "jdbc:mysql:///ChatMaster";
时,它工作正常。
我得到的异常如下。
Exception in connectjava.sql.SQLException: null, message from server: "Host 'Rp-Salh' is not allowed to connect to this MySQL server"
【问题讨论】:
我认为 SQL Server 已配置,所有来自外部(本地主机除外)的请求都会被阻止。 我需要它在我网络上的任何系统上工作,这是主要问题。 您需要更改数据库配置。 【参考方案1】:正如错误告诉您的那样,该 ip Adress 没有访问该数据库的权限,我认为这不是您的代码错误。
我不知道 MySQL 是不是一样,但是对于 postgresql 我 需要在数据库中定义以允许远程连接。
【讨论】:
感谢男士为我指出正确的方向 +1。【参考方案2】:我认为inetAddress.getHostAdress()
将返回主机名(如 Rp-Salh)
所以我推荐你使用这种方法
inetAddress.getLocalHost()
【讨论】:
但是我需要为我网络上的每个人使用我的数据库。并且数据库仅在一个系统上。我认为本地主机可能不起作用【参考方案3】:我可以从错误日志中看到。 InetAddress.getLocalHost();
没有返回正确的 IP 地址。
请尝试通过提供硬编码的 IP 地址连接它(仅用于测试以确定)。
您可以在windows中通过CMD输入ipconfig
获取系统IP地址。
【讨论】:
我检查了你所说的,获取正确的 IP 地址没有任何问题。我首先通过手动输入 ipaddress 进行双重检查,然后检查我的函数返回的内容。【参考方案4】:你需要确保两件事。
检查 MySQl 端口 3306
是否已经打开。这是示例远程连接字符串
String url = "jdbc:mysql://192.168.1.121:3306/ChatMaster";
检查数据库用户名和密码是否正确。
【讨论】:
端口 3306 已打开,用户名也正确,因为它适用于 localhost,我还没有输入任何密码。【参考方案5】:更新 mysql 配置文件(可能在服务器文件目录 etc/mysql/my.conf 中)检查它是否配置了 127.0.0.1(默认)作为主机地址并将其更改为您的 IP。
【讨论】:
【参考方案6】:事实证明@Jan。 St 为我指出了正确的方向,因为问题不在于我的代码或任何获取 ipaddress 的问题,只是默认情况下远程 root 访问在 mysql 中被禁用。我只是按照以下链接中的答案进行了操作。
How to allow remote connection to mysql
注意:如果第一个答案本身不起作用,请确保您也关注同一篇文章中的第二个答案。
【讨论】:
以上是关于MYSQL为啥用IP地址无法连接的主要内容,如果未能解决你的问题,请参考以下文章