Java 连接到MySQL服务器JDBC

Java 连接到MySQL服务器JDBC,java,mysql,jdbc,Java,Mysql,Jdbc,我正在尝试使用eclipse在java中使用JDBC工具连接到MySQL服务器。我只是想知道如何输入2个用户/密码组合。第一个是我用来连接服务器的,例如,当我使用ssh连接到服务器时,第二个是我输入到phpmyadmin时。到目前为止,我只在jdbc连接属性中输入phpmyadmin密码,它没有连接。这是我目前的声明: conn = DriverManager.getConnection("jdbc:mysql://[IP of server]:3306/[Database Table name

我正在尝试使用eclipse在java中使用JDBC工具连接到MySQL服务器。我只是想知道如何输入2个用户/密码组合。第一个是我用来连接服务器的,例如,当我使用ssh连接到服务器时,第二个是我输入到phpmyadmin时。到目前为止,我只在jdbc连接属性中输入phpmyadmin密码,它没有连接。这是我目前的声明:

conn = DriverManager.getConnection("jdbc:mysql://[IP of server]:3306/[Database Table name]", "[UserName (same as phpmyadmin)]","[Password (same as phpmyadmin)]");
我得到一份工作

java.sql.SQLException: null,  message from server: "Host '[My computer's full host name]' is not allowed to connect to this MySQL server"
我只是想知道,除了phpmyadmin用户名/pwd之外,是否还需要输入我的服务器登录名/密码——我用于ssh的登录名/密码。我是JDBC和MySQL服务器的新手,所以如果有任何提示,我将不胜感激


仅在后台,我可以通过ssh成功连接,并且可以通过phpmyadmin登录到服务器。

当您从phpmyadmin登录时,web服务器位于您案例中承载Mysql数据库的同一服务器上。默认情况下,Mysql不允许来自远程主机的连接;只有本地计算机可以访问数据库

我想说,运行java代码的计算机与托管mysql服务器的计算机不同。您必须将Mysql配置为允许通过配置文件从远程主机进行连接,然后更改Mysql.users表中指定用户的主机行,以允许从您的IP地址或任何IP地址(如果不考虑安全性)进行连接

要将mysql配置为允许从远程主机进行连接,必须从配置文件中删除bind address=行

要允许任何主机登录到特定的mysql用户,必须将mysql.users host`列设置为%


这两项都必须完成。

当您从PHPMyAdmin登录时,web服务器位于您案例中承载Mysql数据库的同一服务器上。默认情况下,Mysql不允许来自远程主机的连接;只有本地计算机可以访问数据库

我想说,运行java代码的计算机与托管mysql服务器的计算机不同。您必须将Mysql配置为允许通过配置文件从远程主机进行连接,然后更改Mysql.users表中指定用户的主机行,以允许从您的IP地址或任何IP地址(如果不考虑安全性)进行连接

要将mysql配置为允许从远程主机进行连接,必须从配置文件中删除bind address=行

要允许任何主机登录到特定的mysql用户,必须将mysql.users host`列设置为%


这两项都必须完成。

以下是如何创建一个可以从另一台客户端计算机访问服务器的帐户:

CREATE USER 'bobby'@'localhost' IDENTIFIED BY 'some_password';
这创建了用户,并表示他可以从localhost连接

如果他在机器192.168.0.5上,您会这样做:

CREATE USER 'bobby'@'192.168.0.5' IDENTIFIED BY 'some_password';
当然,您必须适当地授予特权:

GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'192.168.0.5' WITH GRANT OPTION;
这就是我的经历


阅读可能会更好。

以下是如何创建一个可以从另一台客户端计算机访问服务器的帐户:

CREATE USER 'bobby'@'localhost' IDENTIFIED BY 'some_password';
这创建了用户,并表示他可以从localhost连接

如果他在机器192.168.0.5上,您会这样做:

CREATE USER 'bobby'@'192.168.0.5' IDENTIFIED BY 'some_password';
当然,您必须适当地授予特权:

GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'192.168.0.5' WITH GRANT OPTION;
这就是我的经历


您最好还是阅读。

您的MySQL数据库服务器是否与您的客户端在同一台机器上运行?不,您的服务器登录名/密码在这里不起作用。MySQL有自己的身份验证和授权。它不是在试图连接到它的同一台机器上运行的,不是。是否不允许此主机。。。这是一个常见的问题,你知道如何解决吗?其实这不是问题。它是MySQL安全模型的一部分。这需要一些理解。你的MySQL数据库服务器和你的客户端在同一台机器上运行吗?不,你的服务器登录/密码在这里不起作用。MySQL有自己的身份验证和授权。它不是在试图连接到它的同一台机器上运行的,不是。是否不允许此主机。。。这是一个常见的问题,你知道如何解决吗?其实这不是问题。它是MySQL安全模型的一部分。只是需要一些理解。谢谢。我会尽快尝试,我会让你知道,然后我也会接受答案。这是正确的。退房它并没有特别说明要删除bind address=行,但当我遇到这个问题时,我就是这么做的,而且效果很好。@Kgrover您的问题解决了吗?如果你有困难,我可能可以帮你。实际上,我正试图通过android来实现这一点,经过研究,我最终使用了一个网络脚本中间版本。但是,通过纯java,您的答案解决了这个问题。我正在使用托管数据库,但是我找不到任何my.ini或my.cnf
谢谢你。我会尽快尝试,我会让你知道,然后我也会接受答案。这是正确的。退房它并没有特别说明要删除bind address=行,但当我遇到这个问题时,我就是这么做的,而且效果很好。@Kgrover您的问题解决了吗?如果你有困难,我可能可以帮你。实际上,我正试图通过android来实现这一点,经过研究,我最终使用了一个网络脚本中间版本。但是,通过纯java,您的答案解决了问题。我正在使用托管数据库,但找不到任何my.ini或my.cnf文件。今晚我无法尝试,但明天早上我会告诉您。我需要尝试几次,或者已经尝试过。单引号很重要,有点不直观。你可能还需要实现下面亚历克斯的回答。我今晚不能尝试,但我明天早上会告诉你的。我需要尝试几次,或者已经尝试过了。单引号很重要,有点不直观。您可能还需要实现下面Alex的答案。