MySQL中主要包括两种用户:
root用户:为超级管理员,拥有MySQL提供的一切权限;
普通用户:只能拥有创建用户时赋予它的权限。
MySQL的安全性机制主要包括权限机制,用户机制和对用户进行权限管理。
MySQL所提供的权限表
在MySQL的系统数据库mysql中存储着权限表,最主要有mysql.user、mysql.db、mysql.host、table_priv、columns_priv、procs_priv表。
系统表mysql.user
该表有43个字段,这些字段大致可以分为4类,分别为用户字段,权限字段,安全字段和资源控制字段。
1.用户字段:
系统表mysql.user中的用户字段包含3个字段,主要用来判断用户是否能够登录成功,各个字段的含义如下表所示。
字段 |
说明 |
Host |
主机名 |
User |
用户名 |
Password |
密码 |
当用户登录时,首先会到系统表mysql.user中判断用户字段,如果这3个字段能够同时匹配,则会被允许登录。当创建新用户时,实际上会设置用户字段中所包含的3个字段。当修改用户密码时,实际上会修改用户字段中的Password字段。
2.权限字段:
user表中拥有一系列以"_priv"字符串结尾的字段,这些字段决定了用户权限。
字段 |
说明 |
Select_priv |
确定用户是否可以通过SELECT命令选择数据 |
Insert_priv |
确定用户是否可以通过INSERT命令插入数据 |
Update_priv |
确定用户是否可以通过UPDATE命令修改现有数据 |
Delete_priv |
确定用户是否可以通过DELETE命令删除现有数据 |
Create_priv |
确定用户是否可以创建新的数据库和表 |
Drop_priv |
确定用户是否可以删除现有数据库和表 |
Reload_priv |
确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表 |
Shutdown_priv |
确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何用户时,都应当非常谨慎 |
Process_priv |
确定用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程 |
File_priv |
确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令 |