我正在用 python 和 MySQL(MySQLdb、PyQT)编写一个应用程序,遇到了一个问题。 我碰巧在登录表单上输入随机值时,这个随机用户可以访问数据库。该用户不能使用 SELECT,但他可以使用 INSERT! 我是 MySQL 的新手,这是我第一次遇到这样的问题。我看到的问题与我要问的问题类似,但是随机用户能够登录数据库但无权执行任何操作。 我查看了 MYSQL.user 表,没有用户名的用户无权操作数据。输出如下
| localhost | root | Y | Y | Y |
| 127.0.0.1 | root | Y | Y | Y |
| localhost | | N | N | N |
......
有人可以建议为什么会这样,是否有解决方案(解决方法?)?
最佳答案
是的,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 ;
关于python - 随机用户可以访问 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18836076/