目录
数据控制语言
管理用户,对用户授权的操作,即数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户。
主要包括创建用户、给用户授权、对用户撤销授权、查询用户授权和删除用户等
查询用户
在默认的四个数据库中有一个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';
再次查询mysql默认数据库的user表,得到如下结果:
删除用户
DROP USER '用户名'@'IP地址'
例如删除张三用户:
DROP USER 'zhangsan'@'localhost';
修改用户密码
方式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权限