首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到MySQL服务器JDBC

问连接到MySQL服务器JDBC
EN

Stack Overflow用户
提问于 2012-06-18 12:31:53
回答 3查看 11.6K关注 0票数 1

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

代码语言:javascript
复制
conn = DriverManager.getConnection("jdbc:mysql://[IP of server]:3306/[Database Table name]", "[UserName (same as phpmyadmin)]","[Password (same as phpmyadmin)]");

我得到了一个

代码语言:javascript
复制
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登录到服务器。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-18 12:41:52

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

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

要将mysql配置为允许来自远程主机的连接,必须从配置文件中删除"bind-address=“行。

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

这两件事都必须做。

票数 3
EN

Stack Overflow用户

发布于 2012-06-18 12:46:16

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

代码语言:javascript
复制
CREATE USER 'bobby'@'localhost' IDENTIFIED BY 'some_password';

这将创建用户,并说明他可以从localhost连接。

如果他在机器192.168.0.5上,你可以这样做:

代码语言:javascript
复制
CREATE USER 'bobby'@'192.168.0.5' IDENTIFIED BY 'some_password';

当然,您必须适当地授予特权:

代码语言:javascript
复制
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;

不管怎样,这是我的经验。

你最好读一读this section on how to specify MySQL accounts。

票数 6
EN

Stack Overflow用户

发布于 2012-06-18 17:45:04

代码语言:javascript
复制
public class MysqlConnect{
  public static void main(String[] args) {
  System.out.println("MySQL Connect Example.");
  Connection conn = null;
  String url = "jdbc:mysql://localhost:3306/";
  String dbName = "jdbctutorial";
  String driver = "com.mysql.jdbc.Driver";
  String userName = "root"; 
  String password = "root";
  try {
  Class.forName(driver).newInstance();
  conn = DriverManager.getConnection(url+dbName,userName,password);
  System.out.println("Connected to the database");
  conn.close();
  System.out.println("Disconnected from database");
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11076948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档