【问题标题】:random user can access mysql db随机用户可以访问mysql db
【发布时间】:2013-09-21 01:53:15
【问题描述】:

我正在编写一个关于 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 而不是 mysqldb 上设置的数据库权限有关
  • 我的猜测是你需要在 python 端控制访问。你如何构建你的连接字符串?请告诉我您没有为每个应用用户创建一个 mysql 用户。
  • 谢谢。我的错,我真的想创建不同的应用程序用户作为不同的数据库用户。但即使我为访问控制创建了一组表,它也不能解决问题的根源。每个人都可以通过命令行编辑这些用户表。你有什么想法吗?
  • 为什么不用mysql的访问权限?
  • 您能举个例子吗?正如我在上面的清单中所示,没有用户名的用户根本没有任何权限('N'),但可以使用 INSERT。可能你在谈论不同的权限?

标签: python mysql python-2.7


【解决方案1】:

是的,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 ;

【讨论】:

  • 我建议在您的示例中使用除 root 以外的其他用户名。
猜你喜欢
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 2013-11-30
  • 2013-11-29
  • 1970-01-01
相关资源
最近更新 更多