1. mysql.USER表
2. mysql.DB表
3. mysql.TABLES_PRIV表
4. mysql.COLUMNS_PRIV表
select * from USER;
desc USER;
mysql> desc USER;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(64) | YES | | | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
+------------------------+-----------------------------------+------+-----+---------+-------+
select * from DB;
desc DB;
mysql> desc DB; +-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| Db | char(64) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
+-----------------------+---------------+------+-----+---------+-------+
select * from TABLES_PRIV;
desc TABLES_PRIV;
mysql> desc TABLES_PRIV;
+-------------+-----------------------------------------------------------------------------------------------------------------------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------+------+-----+-------------------+-----------------------------+
| Host | char(60) | NO | PRI | | |
| Db | char(64) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Table_name | char(64) | NO | PRI | | |
| Grantor | char(77) | NO | MUL | | |
| Timestamp | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| Table_priv | set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') | NO | | | |
| Column_priv | set('Select','Insert','Update','References') | NO | | | |
+-------------+-----------------------------------------------------------------------------------------------------------------------------------+------+-----+-------------------+-----------------------------+
select * from COLUMNS_PRIV;
desc COLUMNS_PRIV;
mysql> desc COLUMNS_PRIV; +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+
| Host | char(60) | NO | PRI | | |
| Db | char(64) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Table_name | char(64) | NO | PRI | | |
| Column_name | char(64) | NO | PRI | | |
| Timestamp | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| Column_priv | set('Select','Insert','Update','References') | NO | | | |
+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+
1. 先从user表中的:
1) Host
2) User
3) Password
这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。
2. 通过身份认证后,进行权限分配,按照:
1) user
2) db
3) tables_priv
4) columns_priv
的顺序进行验证。
即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db,tables_priv,columns_priv
如果全局权限表user对应的权限为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限
如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。逐级下降
user->db->tables_priv->columns_pri
权限 | 权限级别 | 权限说明 | 最佳安全实践: 网站使用账户是否给予 |
CREATE | 数据库、表或索引 | 创建数据库、表或索引权限 | 建议给与,安装WEB系统时需要创建表 |
DROP | 数据库或表 | 删除数据库或表权限 | 建议给与 |
GRANT OPTION | 数据库、表或保存的程序 | 赋予权限选项 | 不建议给与 |
REFERENCES | 数据库或表 | 无 | 不建议给与 |
ALTER | 表 | 更改表,比如添加字段、索引等 | 建议给与 |
DELETE | 表 | 删除数据权限 | 建议给与 |
INDEX | 表 | 索引权限 | 建议给与 |
INSERT | 表 | 插入权限 | 建议给与 |
SELECT | 表 | 查询权限 | 建议给与 |
UPDATE | 表 | 更新权限 | 建议给与 |
CREATE VIEW | 视图 | 创建视图权限 | 建议给与 |
SHOW VIEW | 视图 | 查看视图权限 | 建议给与 |
ALTER ROUTINE | 存储过程 | 更改存储过程权限 | 不建议给与 |
CREATE ROUTINE | 存储过程 | 创建存储过程权限 | 不建议给与 |
EXECUTE | 存储过程 | 执行存储过程权限 | 不建议给与 |
FILE | 服务器主机上的文件访问 | 文件访问权限 | 不建议给与,防止因为注入导致的隐私文件泄漏 |
CREATE TEMPORARY TABLES | 服务器管理 | 创建临时表权限 | 不建议给与,防止借助临时表发动的二次注入 |
LOCK TABLES | 服务器管理 | 锁表权限 | 不建议给与 |
CREATE USER | 服务器管理 | 创建用户权限 | 不建议给与 |
PROCESS | 服务器管理 | 查看进程权限 | 不建议给与 |
RELOAD | 服务器管理 | 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 | 不建议给与 |
REPLICATION CLIENT | 服务器管理 | 复制权限 | 不建议给与 |
REPLICATION SLAVE | 服务器管理 | 复制权限 | 不建议给与 |
SHOW DATABASES | 服务器管理 | 查看数据库列表权限 | 不建议给与 |
SHUTDOWN | 服务器管理 | 关闭数据库权限 | 不建议给与 |
SUPER | 服务器管理 | 执行kill线程权限 | 不建议给与 |
权限 | 说明 | 网站使用账户是否给予 |
Select | 可对其下所有表进行查询 | 建议给予 |
Insert | 可对其下所有表进行插入 | 建议给予 |
Update | 可对其下所有表进行更新 | 建议给予 |
Delete | 可对其下所有表进行删除 | 建议给予 |
Create | 可在此数据库下创建表或者索引 | 建议给予 |
Drop | 可删除此数据库,及此数据库下的表 | 不建议给予 |
Grant | 赋予权限选项 | 不建议给予 |
References | 未来MySQL特性的占位符 | 不建议给予 |
Index | 可对其下的所有表进行索引 | 建议给予 |
Alter | 可对其下的所有表进行更改 | 建议给予 |
Create_tmp_table | 创建临时表 | 不建议给予 |
Lock_tables | 可对其下所有表进行锁定 | 不建议给予 |
Create_view | 可在此数据下创建视图 | 建议给予 |
Show_view | 可在此数据下查看视图 | 建议给予 |
Create_routine | 可在此数据下创建存储过程 | 不建议给予 |
Alter_routine | 可在此数据下更改存储过程 | 不建议给予 |
Execute | 可在此数据下执行存储过程 | 不建议给予 |
Event | 可在此数据下创建事件调度器 | 不建议给予 |
Trigger | 可在此数据下创建触发器 | 不建议给予 |
原文始发于微信公众号(三沐数安):最值得拥有的Mysql安全配置指南,有用请打赏!
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论