第 8 章 · 第二节
从概念转到 MySQL 的实现
上一节讲的是道理,这一节看 MySQL 具体怎么做。

重 点
MySQL 把权限全部存在 mysql 这个库的几张表里,看得见摸得着。
打个比方
权限表就是门卫手里那本花名册,谁能进哪扇门,一行一行写着。
上一节讲的是道理,这一节看 MySQL 具体怎么做。

MySQL 把权限全部存在 mysql 这个库的几张表里,看得见摸得着。
权限表就是门卫手里那本花名册,谁能进哪扇门,一行一行写着。
登录时认人认一次,之后每一条语句都要单独查权限。

四关按从大到小的顺序问,哪一关点头就放行,都摇头才报错。
登录成功是不是就代表能查表?
授到哪一级,就在哪张表里留下痕迹。

| 权限表 | 这一条记在哪儿 |
|---|
第五张 procs_priv 管存储过程和函数,第 11 章才用得上。
身份、全局权限、连接配置、资源限制,四类字段。

同一个用户名配不同的主机就是不同的账号,权限也各算各的。
真机上这张表有五十来列,上机页那台终端只留了最能说明问题的十五列。
user 表的主码是哪两列?
一行记住某个账号在某个库上的全部权限。

库级授权最省事,以后这个库里新建的表不用再单独授一遍。
像给了整栋楼的通行证,楼里以后新开的房间也进得去。
比库级细一层,一行只管点名的那张表。

最后那列 Column_priv 只是个记号,说明这张表上还另有字段级权限。
表级和库级同时授了,以哪个为准?
细到某一张表的某一列。

字段级只支持查询、插入、更新三种,删除是整行的事,细不到列。
像只允许你改工资表上的职称一栏,姓名和工资两栏碰都不许碰。
为什么 DELETE 不能授到字段级?
谁能调用哪个存储过程或函数,记在这里。

它多两列 Routine_name 和 Routine_type,用来区分是过程还是函数。
存储过程要到第 11 章才写,这一章知道有这么一张表就够了。