1

javaでJDBCツールを使用して(Eclipseを使用して)MySQLサーバーに接続しようとしています。2 つのユーザーとパスワードの組み合わせを入力する方法を考えていました。最初のものはサーバーへの接続に使用するもの (たとえば、サーバーに ssh するとき) で、2 つ目は phpmyadmin に入力するものです。現在、phpmyadminパスワードを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"

phpmyadminのユーザー名/pwdに加えて、サーバーのログイン/パスワード(sshに使用するもの)も入力する必要があるかどうか疑問に思っていました. 私は JDBC と MySQL サーバーを初めて使用するので、ヒントをいただければ幸いです。

背景として、ssh 経由で正常に接続でき、phpmyadmin 経由でサーバーにログインできます。

4

3 に答える 3

6

別のクライアント マシンからサーバーにアクセスできるアカウントを作成する方法は次のとおりです。

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 アカウントの指定方法に関するこのセクションを読んだ方がよいでしょう。

于 2012-06-18T04:46:15.713 に答える
3

PHPMyAdmin からログインすると、Web サーバーは Mysql データベースをホストする同じサーバー上にあります (この場合)。デフォルトでは、Mysql はリモート ホストからの接続を許可しません。ローカル マシンのみがデータベースにアクセスできます。

暗闇の中でショットを撮り、Java コードを実行しているコンピューターは、mysql サーバーをホストしているコンピューターと同じではないと言います。構成ファイルを介してリモート ホストからの接続を許可するように Mysql を構成し、mysql. users指定されたユーザーが IP アドレス (または、セキュリティが問題でない場合は、任意の IP アドレス) からの接続を許可するためのテーブル。

リモート ホストからの接続を許可するように mysql を構成するには、構成ファイルから "bind-address=" 行を削除する必要があります。

ホストが特定の mysql ユーザーにログオンできるようにするには、mysql. usersHost` 列を「%」に変更します。

これらの両方を実行する必要があります。

于 2012-06-18T04:41:52.217 に答える
1
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();
  }
  }
}
于 2012-06-18T09:45:03.717 に答える