2013-05-13 17 views
5

XAMPサーバーと一緒にインストールされているローカルMYSQLデータベースに接続します。私は新しいユーザー、すなわち "NewUser"を作成し、そのパスワードは "パスワード"です。私はこのユーザーにすべての特権を与えました。ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワード:YESを使用)

ユーザー "root"(このユーザーはパスワードなし)を使用してデータベースに接続するコードを作成します。 接続されています。 ..怒鳴るような

return DriverManager.getConnection("jdbc:MySql://localhost/database_name","root",""); 

は今、私は別のユーザー、すなわち、「NEWUSER」とそのpasword「パスワード」

return DriverManager.getConnection("jdbc:MySql://localhost/database_name","NewUser","password"); 

が、その接続されていないことで、同じデータベースに接続するためのコードを書きました。 コンソールの誤差は、「任意のホスト」つまりとして、このユーザーに権限を提供しながら、私はホストタイプを与える

java.sql.SQLException: Access denied for user 'NewUser'@'localhost' (using password: YES) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925) 
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704) 
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1250) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    at sun.reflect.GeneratedConstructorAccessor207.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) 
    at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.createConnection(JDBCConnection.java:214) 
    at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:105) 
    at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54) 
    at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:73) 
    at org.eclipse.datatools.enablement.internal.mysql.connection.JDBCMySQLConnectionFactory.createConnection(JDBCMySQLConnectionFactory.java:28) 
    at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83) 
    at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:359) 
    at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76) 
    at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) 

です。「%」。

これを「localhost」または「127.0.0.1」に変更した場合

だから私は "anyhost"特権を持つデータベースを "NewUser"のような特定のユーザに使用することができます。

クライアントライブデータベースへの接続で、私はここで成功を得た場合、私の成功..すべての

おかげで、あなたのURLが

+0

コンソールから 'mysql -u NewUser -h localhost -p'を使用して接続できますか? – Sal00m

答えて

0
  1. .....この1から私を聞かせてくださいすべて小文字であることを意味し - `JDBCます。mysql:// localhost /をdatabase_nameに」
  2. データベースは、実際にデータベース名と呼ばれてい
+0

彼は接続文字列がrootのために働くので、他のユーザーのためにそこに問題があるのはなぜですか? –

+0

ya、私が与えたデータベース名は "database_name"で、URLは正しいです。それが間違っていれば、最初のケースでも失敗しますが、それは失敗します。 –

+2

ユーザは[mysqlで作成されました](http://dev.mysql.com/doc/refman/5.1/en/create-user.html)そのユーザは[localhost上のdatabase_nameにアクセスする権限を持っています](http://dev.mysql.com/doc/refman/5.1/en/grant.html)? – hd1

0

この構文を試してみてください

return DriverManager.getConnection("jdbc:mysql://localhost/database_name?user=NewUser&password=your_password_here"); 

EDIT(ちょうどそれが "your_password_here" と言いパスワード置き換える) - SECONDのGUESS: をその可能性あなたは192.168.x.x範囲を遮断することによって自分自身をファイアウォールています。

私はあなたがWindowsを実行していると仮定します。コマンドプロンプトを開き、「ipconfig」と入力してEnterを押します。あなたのipv4アドレス(192.168.1.xのようなはずです)を参照してください。

あなたのアンチウィルス/ファイアウォールプログラムが自分自身である192.168.1.xからの接続を許可していることを確認してから、 "%"または"localhost"

これで解決しない場合は、ファイアウォール/ウイルス対策ソフトをすべて終了してもう一度やり直してください。

また、のいずれかによって特権をリロードしてみてください。

XAMPP
  • FLUSH権限を再開
  • +0

    ありがとうございますが、それでも "Access denied for user" @ Sharky –

    1

    最初に指定されたコードが動作し、報告されたトレースに基づいているため、コードの構文ではなく問題がデータベース上にあることを確認しています。MySQLバージョンに基づいて

    単純なフォームUSER_NAMEはuser_nameの同義語である、Mysql documentationに基づいて任意のホスト(%)を指定せずに権限を設定するための代替手段として試してみてください@「%」

    またすぐにも を実行し、ちょうどすべてが正しいことを確認するためにFLUSH PRIVILEGES;

    を使用した後のフラッシュ権限をクリックし、対応する権限を持つNewUserがリストに表示されているかどうかを確認します。

    0

    ユーザーにデータベースへのアクセス権を与えるには、接続を許可するホストを指定する必要があります。 ただし、ホスト名にワイルドカード(%)を使用しても、ユーザーはlocalhostから接続できません。彼らはどんなホストからでも接続できますが、localhostからは接続できません。 localhostから接続する場合、あなたのmysqlインストールでは、あなたが匿名ユーザーであると仮定します。 ユーザーがlocalhostから接続できるようにするには、ホストフィールドに「localhost」という別のユーザーを追加する必要があります。

    詳細については、アカウントのMySQL documentation

    2つはモンティのユーザー名と some_passのパスワードを持っているを参照してください。両方のアカウントは、完全な権限を持つスーパーユーザーアカウントです 何かを行うには。 'monty' @ 'localhost'アカウントは、ローカルホストから に接続している場合にのみ使用できます。 'monty' @ '%'アカウントはホスト部分に '%' ワイルドカードを使用するため、 ホストからの接続に使用できます。

    をmontyとして接続できるようにするには、両方のアカウントをmontyにする必要があります。 localhostアカウントがない場合、 ローカルホストからmontyを接続すると、 mysql_install_dbによって作成されたlocalhostの匿名ユーザーアカウント が優先されます。その結果、montyは匿名ユーザーとして扱われます。 これは、匿名ユーザーアカウントが 'monty' @ '%'アカウントよりも の特定のホスト列値を持っているため、ユーザーテーブルの並べ替え順に先に となります。 (userテーブルのソートは、「アクセス制御の段階1:接続確認」6.2.4項で を議論している。)

    0

    ユーザー/権限が/編集権限へGO/ パスワード変更または更新 パスワードを選択しませんパスワードをhibernate設定ファイルに追加し、サーバを再起動します。

    関連する問題