简体   繁体   English

使用JDBC连接到MySQL时访问被拒绝

[英]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: 如何授予不同的用户权限:

  • ALL PRIVILEGES- as we saw previously, this would allow a MySQL user all access to a designated database (or if no database is selected, across the system) ALL PRIVILEGES-正如我们之前看到的,这将允许MySQL用户全部访问指定的数据库(或者如果未选择数据库,则跨系统)
  • CREATE- allows them to create new tables or databases 创建-允许他们创建新表或数据库
  • DROP- allows them to them to delete tables or databases DROP-允许他们删除表或数据库
  • DELETE- allows them to delete rows from tables INSERT- allows them to insert rows into tables DELETE-允许他们从表中删除行INSERT-允许他们将表中的行插入
  • SELECT- allows them to use the Select command to read through databases SELECT-允许他们使用Select命令来读取数据库
  • UPDATE- allow them to update table rows UPDATE-允许他们更新表行
  • GRANT OPTION- allows them to grant or remove other users' privileges GRANT OPTION-允许他们授予或删除其他用户的特权

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM