5
votes

I would like to connect with my local MYSQL data base, which is installed along with XAMP server. I created a new User ie, " NewUser " and its password is "password". I given all PRIVILEGES to this user.

I write the code to connect with data base by using user "root" (No password for this user). Its connected . Like bellow..

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

Now I wrote the code to connect with same data base by another user ie, "NewUser" and its pasword "password"

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

but its not connected. The error in console is

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)

I give the host type while providing PRIVILEGES to this user, as " any host" ie."%".

If I change this to " localhost " or "127.0.0.1" its working.

So How can i use my database with " anyhost " PRIVILEGES to the particular user like "NewUser" .

If I got success here then I successes in connection to client live Data base..

Thanks to all and please let me out from this one.....

5
Can you connect from console using mysql -u NewUser -h localhost -p?Sal00m

5 Answers

1
votes

Since the first specified code works and also based on the reported trace, i'm pretty sure the problem is on the database, not the code syntax.

Based on the Mysql version, please try as an alternative to set privileges without specifying the any host (%) as based on Mysql documentation,

The simple form user_name is a synonym for user_name@'%'

Also flush privileges immediately after using FLUSH PRIVILEGES;

Just to make sure everything is correct, also run a SHOW GRANTS FOR NewUser; and check if NewUser appears in the list with the corresponding permissions.

0
votes
  1. your URL is meant to be all lowercase -- `jdbc:MySql://localhost/database_name"
  2. Is your database really called database_name?
0
votes

Please try this syntax

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

(just replace your password where it says "your_password_here")

EDIT - SECOND GUESS: Its possible you have firewalled yourself by blocking 192.168.x.x range.

i assume you running windows. open up command prompt, type "ipconfig" press enter. see your ipv4 adress (should be something like 192.168.1.x)

Be sure your antivirus/firewall program permits connection from 192.168.1.x (which is yourself) and then try using that instead of "%" or "localhost"

If this doesn't work, close all your firewall/antivirus and try again.

Also try reloading privileges either by:

  • restarting xampp
  • FLUSH PRIVILEGES;
0
votes

In order to give users access to your database, you need to specify a host where they should be allowed to connect from. But please be careful: Even if you use a wildcard (%) as the host name, the user cannot connect from localhost. They can connect from ANY host, but not from localhost. When connecting from localhost, I assume your mysql installation assumes you to be an anonymous user. In order to allow a user to connect from localhost, you need to add a separate user whith "localhost" in the host field.

For more details, please refer to the MySQL documentation

Two of the accounts have a user name of monty and a password of some_pass. Both accounts are superuser accounts with full privileges to do anything. The 'monty'@'localhost' account can be used only when connecting from the local host. The 'monty'@'%' account uses the '%' wildcard for the host part, so it can be used to connect from any host.

It is necessary to have both accounts for monty to be able to connect from anywhere as monty. Without the localhost account, the anonymous-user account for localhost that is created by mysql_install_db would take precedence when monty connects from the local host. As a result, monty would be treated as an anonymous user. The reason for this is that the anonymous-user account has a more specific Host column value than the 'monty'@'%' account and thus comes earlier in the user table sort order. (user table sorting is discussed in Section 6.2.4, “Access Control, Stage 1: Connection Verification”.)

0
votes

GO to users/privileges/edit privileges/ change password or select no password update the password in hibernate config file and restart the server.