2012-06-18 124 views
1

我正尝试使用java中的JDBC工具(使用eclipse)连接到MySQL服务器。我只是想知道如何输入2个用户/密码组合。第一个是我用来连接到服务器的一个(例如,当我进入服务器)和第二个我进入phpmyadmin。到目前为止,我只将phpmyadmin密码放入jdbc连接属性中,并且不会连接。这是我目前的语句:连接到MySQL服务器JDBC

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" 

,如果我需要输入我的服务器登录/密码(我使用的一个对SSH)我只是想知道,以及除到phpmyadmin用户名/密码。我是JDBC和MySQL服务器的新手,所以我会很感激任何提示。

只是为了后台,我能够通过SSH成功​​连接,我可以通过phpmyadmin登录到服务器。

+0

您的MySQL数据库服务器是否与客户端在同一台机器上运行? – Marvo

+0

不,您的服务器登录名/密码在这里不起作用。 MySQL做自己的认证和授权。 – Marvo

+0

它不是在试图连接到它的同一台机器上运行,没有。 – Kgrover

回答

3

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

我会在黑暗中拍摄一张照片,并说您正在运行java代码的计算机与托管mysql服务器的计算机不同。您必须配置Mysql以允许通过配置文件从远程主机进行连接,然后更改mysql的主机行。 users表为指定的用户允许从您的IP地址连接(或者,如果安全不是您关心的任何IP地址)。

要配置mysql以允许来自远程主机的连接,您必须删除“绑定地址=“来自配置文件的行。

要允许任何主机登录到特定的mysql用户,您必须设置mysqlusers主机列到“%”。

这两个都必须完成。

+0

谢谢。我会尽快尝试,我会让你知道(然后我会接受答案)。 – Kgrover

+0

配置文件是my.cnf,对不对? – Kgrover

+0

这是正确的。看看http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html。它没有具体说去除bind-address =行,但这就是我遇到这个问题时所做的,并且它工作正常。 –

6

这里是你如何创建一个可以从其他客户机访问您的服务器的帐户:

CREATE USER 'bobby'@'localhost' IDENTIFIED BY 'some_password'; 

创建该用户,并说他可以从本地主机连接。

如果他是在机器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; 

这一直是我的反正体验。

你可能最好读this section on how to specify MySQL accounts

+0

今晚我不能尝试这个,但明天早上我会告诉你。 – Kgrover

+0

这需要一些尝试(或为我做)。单引号是重要的,有点不直观。下面也可能需要实施Alex的答案。 – Marvo

0
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";`enter code here` 
    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(); 
    } 
    } 
}