4

我正在编写一个关于 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           |
......

有人可以建议为什么会发生这种情况,是否有解决方案(解决方法?)?

4

1 回答 1

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 ;
于 2013-11-27T06:47:16.487 回答