MySQL 数据库是 Web 开发中最常用的数据库系统之一,为保证数据库的安全,MySQL 数据库提供五种重要的权限控制表。这些权限表是:
1. mysql.user, 用户授权表
2. mysql.db, 数据库对象授权表
3. mysql.tables_priv, 数据表对象授权表
4. mysql.columns_priv, 数据表列对象授权表
5. mysql.procs_priv, 存储过程和函数对象授权表
下面我们分别介绍它们的使用方法。
一、mysql.user - 用户授权表
mysql.user 表保存了 MySQL 数据库中用户账户的信息,每一个用户都有一个相应的记录。这个表被用来控制 MySQL 用户的访问权限。每个用户记录包含用户名和密码,并给定他们在 MySQL 上的访问权限。
用户授权表中的字段有:
- Host: 表示用户登陆的主机名或者 IP 地址。
- User: 用户名,即登陆的账号名称。
- Password: 用户密码,加密存储。
- Select_priv: 是否具有SELECT选项的权限。
- Insert_priv: 是否具有INSERT选项的权限。
- Update_priv: 是否具有UPDATE选项的权限。
- Delete_priv: 是否具有DELETE选项的权限。
- Create_priv: 是否具有CREATE选项的权限。
- Drop_priv: 是否具有DROP选项的权限。
- Reload_priv: 是否具有RELOAD选项的权限。
- Shutdown_priv: 是否具有SHUTDOWN选项的权限。
- Process_priv: 是否具有PROCESS选项的权限。
- File_priv: 是否具有FILE选项的权限。
- References_priv: 是否具有REFERENCES选项的权限。
- Index_priv: 是否具有INDEX选项的权限。
- Alter_priv: 是否具有ALTER选项的权限。
- Show_db_priv: 是否具有SHOW DATABASES选项的权限。
- Super_priv: 是否具有SUPER选项的权限。
- Create_tmp_table_priv: 是否具有CREATE TEMPORARY TABLES选项的权限。
- Lock_tables_priv: 是否具有LOCK TABLES选项的权限。
- Execute_priv: 是否具有EXECUTE选项的权限。
- Repl_slave_priv: 是否具有SLAVE REPLICATION选项的权限。
- Repl_client_priv: 是否具有REPLICATION CLIENT选项的权限。
- Create_view_priv: 是否具有CREATE VIEW选项的权限。
- Show_view_priv: 是否具有SHOW VIEW选项的权限。
- Create_routine_priv: 是否具有创建Function、Procedure、Trigger选项的权限。
- Alter_routine_priv: 是否具有ALTER ROUTINE 选项的权限。
- Create_user_priv: 是否具有CREATE USER 选项的权限。
- Event_priv: 是否具有EVENT 选项的权限。
- Trigger_priv: 是否具有TRIGGER选项的权限。
下面的示例为用户“testuser”在主机“localhost”上授予 SELECT 和 INSERT 权限:
```
mysql> grant SELECT, INSERT on testdb.* to 'testuser'@'localhost';
```
二、mysql.db - 数据库对象授权表
mysql.db 表保存了 MySQL 数据库中的数据库对象(database、table、column)的信息。这个表被用来控制 MySQL 数据库对象的访问权限。
- Host: 表示用户登陆的主机名或者 IP 地址。
- Db: 数据库名称。
- User: 用户名,即登陆的账号名称。
- Select_priv: 是否具有该数据库的SELECT选项的权限。
- Insert_priv: 是否具有该数据库的INSERT选项的权限。
- Update_priv: 是否具有该数据库的UPDATE选项的权限。
- Delete_priv: 是否具有该数据库的DELETE选项的权限。
- Create_priv: 是否具有该数据库的CREATE选项的权限。
- Drop_priv: 是否具有该数据库的DROP选项的权限。
- Grant_priv: 是否具有该数据库的GRANT选项的权限。
- References_priv: 是否具有该数据库的REFERENCES选项的权限。
- Index_priv: 是否具有该数据库的INDEX选项的权限。
- Alter_priv: 是否具有该数据库的ALTER选项的权限。
- Create_tmp_table_priv: 是否具有该数据库的CREATE TEMPORARY TABLES选项的权限。
- Lock_tables_priv: 是否具有该数据库的LOCK TABLES选项的权限。
- Create_view_priv: 是否具有该数据库的CREATE VIEW选项的权限。
- Show_view_priv: 是否具有该数据库的SHOW VIEW选项的权限。
- Create_routine_priv: 是否具有该数据库的创建Function、Procedure、Trigger选项的权限。
- Alter_routine_priv: 是否具有该数据库的ALTER ROUTINE选项的权限。
- Execute_priv: 是否具有该数据库的EXECUTE选项的权限。
下面的示例为用户“testuser”在主机“localhost”上授予访问“testdb”数据库的 SELECT 权限:
```
mysql> grant SELECT on testdb.* to 'testuser'@'localhost';
```
三、mysql.tables_priv - 数据表对象授权表
mysql.tables_priv 授权表用于控制用户对数据库的数据表的访问权限。
- Host: 表示用户登陆的主机名或者 IP 地址。
- Db: 数据库名称。
- User: 用户名,即登陆的账号名称。
- Table_name: 数据库中的表名。
- Grantor: 谁给这个权限的。
- Timestamp: 最后一次赋权时间戳。
- Table_priv: 对该表的操作权限,包括 SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、REFERENCES、INDEX、ALTER表。
- Column_priv: 对表中的某一列的操作权限,包括 SELECT、INSERT、UPDATE。
下面的示例为用户“testuser”在主机“localhost”上授予对“test_table”的 SELECT 权限:
```
mysql> grant SELECT on testdb.test_table to 'testuser'@'localhost';
```
四、mysql.columns_priv - 数据表列对象授权表
mysql.columns_priv 表用于控制 MySQL 数据库中数据表列对象的访问权限。
- Host: 表示用户登陆的主机名或者 IP 地址。
- Db: 数据库名称。
- User: 用户名,即登陆的账号名称。
- Table_name: 数据库中的表名。
- Column_name: 数据库中列的名称。
- Timestamp: 最后一次授予权限的时间戳。
- Column_priv: 对列的操作权限,包括 SELECT、INSERT、UPDATE。
下面的示例为用户“testuser”在主机“localhost”上授予对“test_table”中的“test_column”的 SELECT 权限:
```
mysql> grant SELECT (test_column) on testdb.test_table to 'testuser'@'localhost';
```
五、mysql.procs_priv - 存储过程和函数对象授权表
mysql.procs_priv 授权表用于控制存储过程和函数对象的访问权限。
- Host: 表示用户登陆的主机名或者 IP 地址。
- Db: 数据库名称。
- User: 用户名,即登陆的账号名称。
- Routine_name: 存储过程和函数名称。
- Routine_type: 存储过程或函数。
- Grantor: 谁给这个权限的。
- Proc_priv: 存储过程和函数的操作权限。
下面的示例为用户“testuser”在主机“localhost”上授予对 MySQL 存储过程“test_proc”的 EXECUTE 权限:
```
mysql> grant EXECUTE on testdb.test_proc to 'testuser'@'localhost';
```
总之,MySQL 数据库提供了五种重要的权限控制表。这些表可帮助您设置并维护用户和组的数据库访问权限。正确使用它们可确保您的数据库受到最佳保护。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/
发表评论 取消回复