我正在编写一个关于python和MySQL(MySQLdb,PyQT)的应用程序并面临一个问题。 我碰巧在登录表单上输入随机值时,这个随机用户可以访问数据库。这个用户不能使用SELECT,但他可以使用INSERT! 我是MySQL新手,这是我第一次遇到这样的问题。我看到的问题就像我要问的那个问题,但有一个随机用户能够登录到db,但没有权利做任何事情。 我查看了MYSQL.user表,没有用户名的用户没有权限来操作数据。输出如下:
| localhost | root | Y | Y | Y |
| 127.0.0.1 | root | Y | Y | Y |
| localhost | | N | N | N |
......
有人可以建议为什么会这样,并且有解决方案(解决方法?)?
答案 0 :(得分:0)
是的,当然在mysql中有一个解决你问题的方法。
使用GRANT和REVOKE这样做,它们位于SQL中的DATA CONTROL LANGUAGE下。
我举例说明如何使用它..
mysql> revoke all privileges on *.* from 'root'@'localhost';
使用此查询,我在所有数据库的所有表上撤消了root用户的所有权限。 如果我想在任何特定数据库的情况下那么..
mysql> revoke all privileges on exampledatabase.* from 'root'@'localhost';
如果我想要任何特定的表,那么..
mysql> revoke all privileges on exampledatabase.mytable from 'root'@'localhost';
如果我想在任何特定表的情况下限制特定权限,那么..
mysql> revoke select on exampledatabase.mytable from 'root'@'localhost';
现在我想在特定表格的情况下向root用户授予特定权限..
mysql> grant select on exampledatabase.mytable
to 'root'@'localhost' identified by password
'*A4B6157319038724E3560894F7F932C8886EBFCF' with grant option ;