mysql information_schema 权限,MYSQL限制用户访问information_schema

I have a MySQL server (Server version: 5.1.68-community; MySQL client version: 5.0.51a). Is there any way to restrict ALL access to information_schema for all users?

What happens is that, some customer sites are getting hacked frequently through SQL Injection and they can get the database structure from information_schema table/view. Of course, we need to change the PHP codes to prevent SQL Injection, but still I would like to restrict access to information_schema server-wide.

Please guide me... thanks in advance

解决方案

The INFORMATION_SCHEMA is a virtual database that holds meta-information about all databases accessible to current user. I.e. it's build dynamically according to user's permissions. It isn't real database. You should not try to change permissions to it in any case - it's updated dynamically according to server's state.

So your question has little sense. If someone will compromise some of users and get system control with it's permissions, he will be able to access to INFORMATION_SCHEMA for that user by definition (as that user can access any thing which is allowed by it's permissions - INFORMATION_SCHEMA is "a projection" of user's permissions).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是 MySQLinformation_schema 数据库,它包含关于数据库中的所有元数据信息,包括表、列和索引等。MySQL中的information_schema是一个元数据数据库,它包含有关MySQL服务器的信息。information_schema中包含许多表,这些表提供了关于MySQL服务器的各种信息,例如数据库,表,列,索引,用户权限等。 在MySQL中,您可以使用以下命令访问information_schema数据库: ``` USE information_schema; ``` 然后,您可以使用SELECT语句从information_schema中的表中检索所需的信息。例如,以下命令将返回当前MySQL服务器上所有数据库的名称: ``` SELECT schema_name FROM schemata; ``` 如果您想查看有关MySQL中的其他表或列的信息,请查看MySQL官方文档或使用以下命令检索信息_schema中的所有表的列表: ``` SELECT table_name FROM tables WHERE table_schema = 'information_schema'; ``` ### 回答2: MySQL中的information_schema是一个虚拟的数据库,其中包含了关于MySQL服务器的元数据信息。它包含了多个表,用于存储关于数据库、表、列、用户权限等信息的一些元数据。这些元数据可以通过查询information_schema中的表来进行获取。 information_schema中包含的表的具体信息如下: 1. CHARACTER_SETS:该表包含了MYSQL支持的字符集的信息。 2. COLLATIONS:该表存储了MYSQL支持的排序规则。 3. COLUMNS:该表用于存储所有表和视图的列定义信息。 4. KEY_COLUMN_USAGE:该表存储了表、索引和外键中用到的列。 5. ROUTINES:该表存储了所有用户自定义函数和存储过程的信息。 6. SCHEMATA:该表包含了所有数据库的信息。 7. TABLES:该表用于存储所有表的信息。 8. USERS:该表存储了所有MySQL用户的信息,包括用户名、主机等。 除了上述表之外,information_schema中还包含了一些其他表,如VIEW_TABLE_USAGE、VIEW_ROUTINE_USAGE等,这些表也都提供了有关数据库和表的额外信息。 information_schema的作用非常重要,可以通过它查询到的元数据信息帮助我们更好地了解数据库中的结构和关系,从而更好的进行数据管理和数据操作。 ### 回答3: MySQL中的information_schema是一个系统数据库,它用于存储数据库中所有元数据的信息。元数据是关于数据库对象(表、列、索引等)的元信息,而information_schema中包含了这些元数据的集合,是MySQL中非常重要的数据库之一。 information_schema中包含许多数据表和视图,每个数据表或视图对应着一个元数据信息的集合。其中最重要的是以下几个: 1.数据库(SCHEMATA):包含数据库信息,如数据库名、默认字符集等; 2.表(TABLES):包含表的信息,如表名、表类型、创建时间等; 3.列(COLUMNS):包含表中所有列的信息,如列名、数据类型、长度等; 4.索引(STATISTICS):包含表的索引信息,如索引名、唯一性、索引类型等; 5.权限(USER_PRIVILEGES、SCHEMA_PRIVILEGES、TABLE_PRIVILEGES):包含数据库、表、列的权限信息。 除了上述常用的数据表和视图之外,还有一些其他的数据表或视图,如ROUTINES、PARAMETERS和KEY_COLUMN_USAGE。这些元数据信息可以通过SQL语句进行查询和分析,常用于数据库开发和管理中。 总之,information_schemaMySQL中非常重要的数据库之一,它存储了所有关于数据库对象的元数据信息,是数据库开发和管理的重要工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值