[英]Access denied when using JDBC to connect to MySQL
This question has several occurrence, but no answer provides information on how to fix or diagnose the problem. 该问题已多次出现,但没有答案提供有关如何解决或诊断问题的信息。 I have a simple java application that uses MySQL JDBC to connect to MySQL database on my local server:
我有一个简单的Java应用程序,它使用MySQL JDBC连接到本地服务器上的MySQL数据库:
String url = "jdbc:mysql://localhost:3306/dbName";
String userName = "parser";
String password = "123";
try {
Connection conn = DriverManager.getConnection(url,userName, password);
} catch (SQLException e1) {
e1.printStackTrace();
}
However java throws an exception: 但是,java抛出异常:
java.sql.SQLException: Access denied for user 'parser'@'localhost' (using password: YES)
Many answers to simillar question suggest that user has no privileges for connetction, but in my case it has: 相似问题的许多答案表明用户没有连接特权,但在我的情况下,它具有:
+---------------------------------------------------------------+
| Grants for parser@% |
+---------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'parser'@'%' WITH GRANT OPTION |
+---------------------------------------------------------------+
Can any one explain to me why this happens, how to diagnose or understand what's the issue? 谁能向我解释为什么会发生这种情况,如何诊断或了解问题所在?
Update 1: Permissions list for mysql users 更新1: mysql用户的权限列表
+--------------------------+---------------+-------------------------+--------------+
| GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE |
+--------------------------+---------------+-------------------------+--------------+
| 'root'@'localhost' | def | SELECT | YES |
| 'root'@'localhost' | def | INSERT | YES |
| 'root'@'localhost' | def | UPDATE | YES |
| 'root'@'localhost' | def | DELETE | YES |
| 'root'@'localhost' | def | CREATE | YES |
| 'root'@'localhost' | def | DROP | YES |
| 'root'@'localhost' | def | RELOAD | YES |
| 'root'@'localhost' | def | SHUTDOWN | YES |
| 'root'@'localhost' | def | PROCESS | YES |
| 'root'@'localhost' | def | FILE | YES |
| 'root'@'localhost' | def | REFERENCES | YES |
| 'root'@'localhost' | def | INDEX | YES |
| 'root'@'localhost' | def | ALTER | YES |
| 'root'@'localhost' | def | SHOW DATABASES | YES |
| 'root'@'localhost' | def | SUPER | YES |
| 'root'@'localhost' | def | CREATE TEMPORARY TABLES | YES |
| 'root'@'localhost' | def | LOCK TABLES | YES |
| 'root'@'localhost' | def | EXECUTE | YES |
| 'root'@'localhost' | def | REPLICATION SLAVE | YES |
| 'root'@'localhost' | def | REPLICATION CLIENT | YES |
| 'root'@'localhost' | def | CREATE VIEW | YES |
| 'root'@'localhost' | def | SHOW VIEW | YES |
| 'root'@'localhost' | def | CREATE ROUTINE | YES |
| 'root'@'localhost' | def | ALTER ROUTINE | YES |
| 'root'@'localhost' | def | CREATE USER | YES |
| 'root'@'localhost' | def | EVENT | YES |
| 'root'@'localhost' | def | TRIGGER | YES |
| 'root'@'localhost' | def | CREATE TABLESPACE | YES |
| 'mysql.sys'@'localhost' | def | USAGE | NO |
| 'parser'@'127.0.0.1' | def | SELECT | YES |
| 'parser'@'127.0.0.1' | def | INSERT | YES |
| 'parser'@'127.0.0.1' | def | UPDATE | YES |
| 'parser'@'127.0.0.1' | def | DELETE | YES |
| 'parser'@'127.0.0.1' | def | CREATE | YES |
| 'parser'@'127.0.0.1' | def | DROP | YES |
| 'parser'@'127.0.0.1' | def | RELOAD | YES |
| 'parser'@'127.0.0.1' | def | SHUTDOWN | YES |
| 'parser'@'127.0.0.1' | def | PROCESS | YES |
| 'parser'@'127.0.0.1' | def | FILE | YES |
| 'parser'@'127.0.0.1' | def | REFERENCES | YES |
| 'parser'@'127.0.0.1' | def | INDEX | YES |
| 'parser'@'127.0.0.1' | def | ALTER | YES |
| 'parser'@'127.0.0.1' | def | SHOW DATABASES | YES |
| 'parser'@'127.0.0.1' | def | SUPER | YES |
| 'parser'@'127.0.0.1' | def | CREATE TEMPORARY TABLES | YES |
| 'parser'@'127.0.0.1' | def | LOCK TABLES | YES |
| 'parser'@'127.0.0.1' | def | EXECUTE | YES |
| 'parser'@'127.0.0.1' | def | REPLICATION SLAVE | YES |
| 'parser'@'127.0.0.1' | def | REPLICATION CLIENT | YES |
| 'parser'@'127.0.0.1' | def | CREATE VIEW | YES |
| 'parser'@'127.0.0.1' | def | SHOW VIEW | YES |
| 'parser'@'127.0.0.1' | def | CREATE ROUTINE | YES |
| 'parser'@'127.0.0.1' | def | ALTER ROUTINE | YES |
| 'parser'@'127.0.0.1' | def | CREATE USER | YES |
| 'parser'@'127.0.0.1' | def | EVENT | YES |
| 'parser'@'127.0.0.1' | def | TRIGGER | YES |
| 'parser'@'127.0.0.1' | def | CREATE TABLESPACE | YES |
| 'simple_cms'@'localhost' | def | USAGE | NO |
| 'root'@'%' | def | SELECT | YES |
| 'root'@'%' | def | INSERT | YES |
| 'root'@'%' | def | UPDATE | YES |
| 'root'@'%' | def | DELETE | YES |
| 'root'@'%' | def | CREATE | YES |
| 'root'@'%' | def | DROP | YES |
| 'root'@'%' | def | RELOAD | YES |
| 'root'@'%' | def | SHUTDOWN | YES |
| 'root'@'%' | def | PROCESS | YES |
| 'root'@'%' | def | FILE | YES |
| 'root'@'%' | def | REFERENCES | YES |
| 'root'@'%' | def | INDEX | YES |
| 'root'@'%' | def | ALTER | YES |
| 'root'@'%' | def | SHOW DATABASES | YES |
| 'root'@'%' | def | SUPER | YES |
| 'root'@'%' | def | CREATE TEMPORARY TABLES | YES |
| 'root'@'%' | def | LOCK TABLES | YES |
| 'root'@'%' | def | EXECUTE | YES |
| 'root'@'%' | def | REPLICATION SLAVE | YES |
| 'root'@'%' | def | REPLICATION CLIENT | YES |
| 'root'@'%' | def | CREATE VIEW | YES |
| 'root'@'%' | def | SHOW VIEW | YES |
| 'root'@'%' | def | CREATE ROUTINE | YES |
| 'root'@'%' | def | ALTER ROUTINE | YES |
| 'root'@'%' | def | CREATE USER | YES |
| 'root'@'%' | def | EVENT | YES |
| 'root'@'%' | def | TRIGGER | YES |
| 'root'@'%' | def | CREATE TABLESPACE | YES |
| 'parser'@'%' | def | SELECT | YES |
| 'parser'@'%' | def | INSERT | YES |
| 'parser'@'%' | def | UPDATE | YES |
| 'parser'@'%' | def | DELETE | YES |
| 'parser'@'%' | def | CREATE | YES |
| 'parser'@'%' | def | DROP | YES |
| 'parser'@'%' | def | RELOAD | YES |
| 'parser'@'%' | def | SHUTDOWN | YES |
| 'parser'@'%' | def | PROCESS | YES |
| 'parser'@'%' | def | FILE | YES |
| 'parser'@'%' | def | REFERENCES | YES |
| 'parser'@'%' | def | INDEX | YES |
| 'parser'@'%' | def | ALTER | YES |
| 'parser'@'%' | def | SHOW DATABASES | YES |
| 'parser'@'%' | def | SUPER | YES |
| 'parser'@'%' | def | CREATE TEMPORARY TABLES | YES |
| 'parser'@'%' | def | LOCK TABLES | YES |
| 'parser'@'%' | def | EXECUTE | YES |
| 'parser'@'%' | def | REPLICATION SLAVE | YES |
| 'parser'@'%' | def | REPLICATION CLIENT | YES |
| 'parser'@'%' | def | CREATE VIEW | YES |
| 'parser'@'%' | def | SHOW VIEW | YES |
| 'parser'@'%' | def | CREATE ROUTINE | YES |
| 'parser'@'%' | def | ALTER ROUTINE | YES |
| 'parser'@'%' | def | CREATE USER | YES |
| 'parser'@'%' | def | EVENT | YES |
| 'parser'@'%' | def | TRIGGER | YES |
| 'parser'@'%' | def | CREATE TABLESPACE | YES |
+--------------------------+---------------+-------------------------+--------------+
It seems like the permission of user "parser" is not correct. 似乎用户“解析器”的权限不正确。 You can check the configuration of user with statement.
您可以使用语句检查用户的配置。
SELECT * FROM information_schema.USER_PRIVILEGES;
If you have granded an user new permission you have to reload the settings. 如果授予用户新的权限,则必须重新加载设置。 You can do this with this
FLUSH PRIVILEGES;
您可以使用此
FLUSH PRIVILEGES;
来做到这一点FLUSH PRIVILEGES;
How To Grant Different User Permissions: 如何授予不同的用户权限:
To provide a specific user with a permission, you can use this framework: 要为特定用户提供权限,您可以使用以下框架:
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
I hope this will help you solve your issue. 希望这可以帮助您解决问题。 Never forget to flush!!!
永远不要忘记冲洗!!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.