SQL语句——DCL语句

目录

 

数据控制语言

查询用户

创建用户

删除用户

修改用户密码

忘记管理员用户密码解决办法

查看权限

给用户授权

撤销授权


数据控制语言

管理用户,对用户授权的操作,即数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户。

主要包括创建用户、给用户授权、对用户撤销授权、查询用户授权和删除用户等

查询用户

在默认的四个数据库中有一个mysql数据库,里面有个user表,这个表就是记录了我们的数据库用户

-- 1. 切换到mysql数据库

USE mysql;

-- 2. 查询user表

SELECT * FROM USER;

上面表示的是一个用户root,通配符:% 表示可以在任意主机使用此用户登录数据库,而localhost表示只能在本地主机能使用此用户登录数据库

创建用户

* CREATE USER 用户名@'IP地址(主机名)' IDENTIFIED BY '密码';

    > 用户只能在指定的IP地址上登录

  * CREATE USER 用户名@'%' IDENTIFIED BY '密码';

> 用户可以在任意IP地址上登录

说明 关键字
用户名 将创建的用户名
主机名(IP地址) 指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost,如果想让该用户可以 从任意远程主机登陆,可以使用通配符%
密码 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

 

 

 

 

 

CREATE USER 'zhangsan'@'localhost' IDENTIFIED BY '123';例如创建张三用户在本地数据库可登录:

创建李四用户在任意主机可登录此数据库

CREATE USER 'lisi'@'%' IDENTIFIED BY '123';

SQL语句——DCL语句_第1张图片

再次查询mysql默认数据库的user表,得到如下结果:

SQL语句——DCL语句_第2张图片

删除用户

DROP USER '用户名'@'IP地址'

例如删除张三用户:

DROP USER 'zhangsan'@'localhost';

SQL语句——DCL语句_第3张图片

修改用户密码

方式1:DML方式

UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';

UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER = 'lisi';

方式2:DCL方式:

SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');

忘记管理员用户密码解决办法

如果我们想要修改用户密码,是需要你去登录一个管理员用户(比如说root)才能去修改的,但是如果我们忘记root用户密码怎么办?解决步骤如下:

1. cmd -- > net stop mysql 停止mysql服务

         * 需要管理员运行该cmd

2. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables

3. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功

4. use mysql;

5. update user set password = password('你的新密码') where user = 'root';

6. 关闭两个窗口

7. 打开任务管理器,手动结束mysqld.exe 的进程

8. 启动mysql服务 net start mysql

9. 使用新密码登录。

查看权限

SHOW GRANTS FOR '用户名'@ 'IP地址'

    > 查看指定用户的权限

例如:查询用户lisi在任意主机上的权限

SHOW GRANTS FOR 'lisi'@'%';

给用户授权

  * GRANT 权限1, … , 权限n ON 数据库.表名 TO '用户名'@'IP地址'

    > 权限、用户、数据库

    > 给用户分派在指定的数据库上的指定的权限

    > 例如;GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO 'user1'@'localhost';

      * 给user1用户分派在mydb1数据库上所有表的create、alter、drop、insert、update、delete、select权限

  * GRANT ALL ON 数据库.* TO '用户名'@'IP地址';

    > 给用户分派指定数据库上表的所有权限

  * GRANT ALL ON *.* TO 'zhangsan'@'localhost';

         >给张三用户授予本地主机在任意数据库任意表上所有权限

*表示通配符

撤销授权

  * REVOKE 权限1, … , 权限n ON 数据库.表名 FROM '用户名'@'IP地址';

    > 撤消指定用户在指定数据库上的指定权限

    > 例如;REVOKE CREATE,ALTER,DROP ON mydb1.* FROM 'user1'@'localhost';

      * 撤消user1用户在本地主机上的mydb1数据库上的create、alter、drop权限

 

你可能感兴趣的:(mysql数据库,mysql)