我遇到了用户访问控制的问题。更清楚的是,我创建的mysql用户可以访问除我访问权限之外的其他表。 假设我以root身份登录到mysql并且有许多数据库,并且在数据库“test”中,有许多表,其中一个是“新闻”。 我想创建用户专门访问“test.news”中的“select”值。这就是它的样子:
mysql> grant select on test.news to 'new_user2'@'localhost' identified by 'XXXXXXX';
Query OK, 0 rows affected (0.00 sec)
已刷新的权限:flush privileges;
现在,注销,我以new_user2登录:
/opt/lampp/bin/./mysql -u new_user2 -p
并希望在那里看到数据库:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.00 sec)
这很好,从某种意义上说,“root”帐户中还有其他数据库对new_user2不可见。然后,我想看看测试中的表格。所以 -
use test;
show tables;
这是我的第一次震惊.. 我在“测试”数据库中看到了所有表,这是我没想到的。我只想看到的是“新闻”表。或者,获得访问数据库中一个表的所有用户是否可以实际查看所有表,这是正常的吗?
第二次震惊,我使用select *
作为另一个表 - “user”,这实际上是“test”中的另一个表,我可以看到用户表中的所有内容。
因此,当我创建“new_user2”并仅授予访问test.news的权限时,它如何访问test.user? select * from news
工作正常......
我是否真的限制了对“test”数据库中所有其他表的访问?如果没有,我该怎么做?
行。好像这还不够,我实际上可以删除'root'创建的表。
mysql> drop table member;
Query OK, 0 rows affected (0.42 sec)
登录root ...
时,这些是“new_user2”@“localhost”的授权mysql> SHOW GRANTS FOR 'new_user2'@'localhost';
+------------------------------------------------------------------------------------------------------------------+
| Grants for new_user2@localhost |
+------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'new_user2'@'localhost' IDENTIFIED BY PASSWORD '*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' |
| GRANT SELECT ON `test`.`news` TO 'new_user2'@'localhost' |
+------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
我觉得,我在这里缺少一些基本的东西。请帮帮我。非常感谢你。