5

XAMP サーバーと共にインストールされているローカルの MYSQL データベースに接続したいと考えています。新しいユーザー、つまり「 NewUser 」を作成し、そのパスワードは「password」です。このユーザーにすべての特権を与えました。

ユーザー「root」を使用してデータベースに接続するコードを作成します(このユーザーにはパスワードはありません)。その接続されています。以下のように..

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

ここで、別のユーザー、つまり「NewUser」とそのパスワード「password」が同じデータベースに接続するためのコードを作成しました

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)

このユーザーに PRIVILEGES を提供する際に、ホスト タイプを「任意のホスト」、つまり「%」として指定します。

これを「localhost」または「127.0.0.1」に変更すると、機能します。

では、 "NewUser" のような特定のユーザーに対して "anyhost" PRIVILEGES を使用してデータベースを使用するにはどうすればよいでしょうか。

ここで成功した場合は、クライアントのライブ データベースへの接続で成功します。

みんなのおかげで、私をここから出してください.....

4

5 に答える 5

0
  1. URL はすべて小文字にする必要があります -- `jdbc:MySql://localhost/database_name"
  2. データベースの名前は本当に database_name ですか?
于 2013-05-13T13:33:24.367 に答える
0

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

詳細については、MySQL のドキュメントを参照してください。

2 つのアカウントのユーザー名は monty で、パスワードは some_pass です。どちらのアカウントも、何でもできる完全な権限を持つスーパーユーザー アカウントです。'monty'@'localhost' アカウントは、ローカル ホストから接続する場合にのみ使用できます。'monty'@'%' アカウントは、ホスト部分に '%' ワイルドカードを使用するため、任意のホストからの接続に使用できます。

monty がどこからでも monty として接続できるようにするには、両方のアカウントが必要です。localhost アカウントがない場合、monty がローカル ホストから接続するときに、mysql_install_db によって作成される localhost の匿名ユーザー アカウントが優先されます。その結果、monty は匿名ユーザーとして扱われます。この理由は、匿名ユーザー アカウントが 'monty'@'%' アカウントよりも具体的な Host 列の値を持っているため、ユーザー テーブルの並べ替え順で先に来るためです。(ユーザーテーブルの並べ替えについては、セクション6.2.4「アクセス制御、ステージ 1: 接続の検証」で説明しています。)

于 2013-09-02T17:51:56.397 に答える