编写顺序和执行顺序是不一样的

编写顺序:

SELECT
  字段列表
FROM
  表名列表
WHERE
  条件列表
GROUP BY
  分组字段列表
HAVING
  分组后条件列表
ORDER BY
  排序字段列表
LIMIT
  分页参数

MySQL控制权限-小白菜博客

DCL

英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。

查询mysql用户

use mysql; // 用户所具有的全部信息都是放在mysql这个数据库中的
select * from user;

创建用户-语法

create user '用户名'@'主机名' identified by '密码';

创建用户ituser, 只能够在当前主机localhost访问,密码123456

create user 'ituser'@'localhost' identified by '123456';
当前我们创建的这个数据库用户。
它只能访问mysql数据库,其他数据库没有访问的权限。

创建用户user,可以在任意主机访问数据库,密码123456

create user 'user'@'%' identified by '123456';

ps:% 任意主机

修改用户的密码-语法

alter use '用户名'@'主机名' identified with mysql_native_password by '新密码';

修改用户user的访问密码为123

alter use 'user'@'%' identified with mysql_native_password by '123'

删除用户密码-语法

drop user '用户名'@'主机名';

注意:

·主机名可以使用%通配。
·这类SQL开发人员操作的比较少,主要是DBA ( Database Administrator数据库管理员)使用。

权限控制

查询用户有哪些权限

查询用户有哪些权限语法:  show grants for '用户名'@'主机名';

现在我们查询之前创建的 ituser 用户有哪些权限。
show grants for  'ituser'@'localhost';
出现:GRANT USAGE ON xxx表示只有连接权限

授予权限

grant 列表列表  on 数据库名.表名 to '用户名'@'主机名';

现在我们需要给ituser用户设置某一个数据库的所有权限
grant all on itdemo1.* to 'ituser'@'localhost';
出现 GRANT ALL PRIVILEGES 表示是所有的权限

撤销权限

revoke 列表列表 on 数据库名.表名 from '用户名'@'主机名';

现在我们要撤销 ituser用户 itdemo1数据库下所有表的所有权限,如下
revoke all on itdemo1.* from 'ituser'@'localhost';
撤销成功后,我们可以查询一下:
show grants for  'ituser'@'localhost';
出现:GRANT USAGE ON xxx 表示只有连接权限

ps:itdemo1.* 表示itdemo1数据库下的所有表

注意的是

·多个权限之间,使用逗号分隔
·授权时,数据库名和表名可以使用*进行通配,代表所有。