MySQL:将数据库的所有权利授予用户,但用户甚至无法查看数据库

时间:2016-01-27 20:21:14

标签: java mysql

问题:

我在Ubuntu 15.10上使用本地MySQL数据库。

我有两个用户:root用户和名为java且密码为password的用户。后者用于Java JPA测试应用程序。

我需要'java'@'localhost'拥有videogames数据库的所有权限(我不关心安全性)。

我做了什么

我使用mysql -u root -p进入控制台,然后执行GRANT ALL PRIVILEGES ON mydb.videogames TO 'java'@'localhost' WITH GRANT OPTION

然后我执行了mysql -u java -pshow databases,显示了用户java可以访问的少数数据库,但它没有显示videogames数据库。

使用Java / JPA应用程序连接会抛出异常Access denied for user 'java'@'localhost' to database 'videogames' (Error Code: 1044)

我试过了:

  • GRANT ALL PRIVILEGES ON mydb.videogames TO 'java'@'%' WITH GRANT OPTION
  • GRANT ALL PRIVILEGES ON mydb.* TO 'java'@'%' WITH GRANT OPTION
  • FLUSH PRIVILEGES
  • sudo service restart mysql
  • DROP USER ''

SHOW GRANTS s的转储:

  • Grants for java@%
    • GRANT USAGE ON *.* TO 'java'@'%'
    • GRANT ALL PRIVILEGES ON 'mydb'.* TO 'java'@'%' WITH GRANT OPTION
    • GRANT ALL PRIVILEGES ON 'mydb'.'videogames' TO 'java'@'%' WITH GRANT OPTION
  • Grants for java@localhost
    • GRANT USAGE ON *.* TO 'java'@'localhost' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
    • GRANT ALL PRIVILEGES ON 'javabase'.* TO 'java'@'localhost'
    • GRANT ALL PRIVILEGES ON 'mydb'.* TO 'java'@'localhost' WITH GRANT OPTION
    • GRANT ALL PRIVILEGES ON 'mydb'.'videogames' TO 'java'@'localhost' WITH GRANT OPTION

转储SELECT user, host FROM mysql.user;

+------------------+--------------------------+ | user | host | +------------------+--------------------------+ | java | % | | root | 127.0.0.1 | | root | ::1 | | root | (name of my pc) | | debian-sys-maint | localhost | | java | localhost | | root | localhost | +------------------+--------------------------+

感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

视频游戏是一个数据库,而不是一个表。

点之前的所有内容都是数据库,在表格之后。

所以这是对的:

GRANT ALL PRIVILEGES ON videogames.* TO 'java'@'localhost' WITH GRANT OPTION