1 数据库(终):数据库管理员(数据可的备份与、DCL_管理用户)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、数据库的备份与还原
- 1 使用命令行
- 2 使用图形化工具
- 二、DCL 管理用户、授权
- 1 管理用户
- (1)查询用户
- (2)创建用户
- (3)删除用户
- (4)修改用户密码
- (5)mysql中忘记了root用户密码怎么办?
- 2 用户权限授予
- (1)查询某个用户权限
- (2)授予某个用户某些权限
- (3)撤销某个用户某些权限
前言
一、数据库的备份与还原
1 使用命令行
- 命分行:
- 语法
- 备份: mysqldump -u用户名 -p密码 数据库名 > 保存的路径(.sql文件)
- 还原:
1.登录数据库
2.创建数据库
3.使用数据库
4.执行文件 source 文件路径
- 语法
备份:
看一下备份的.sql里面有什么?
可以看到里面的其实就是将数据库里面的表重新创建并插入数据。
所以这种恢复数据库的方式,需要我们重新创建数据库才行
恢复:
这样就恢复了。
2 使用图形化工具
- 图形化工具:
这个就比较简单了,但是恢复同样要先创建数据库
备份:
恢复:
同样要先将数据库创建出来
二、DCL 管理用户、授权
DBA:数据库管理员
1 管理用户
(1)查询用户
查询用户:MySQL的用户在mysql数据库下的user表中,我们直接查询这张表就可以了
- 1 切换到mysql数据库
USE myql; - 2 查询user表
SELECT * FROM USER;
-- 1 切换到mysql数据库
use mysql;
-- 2 查询user表
select * from user;
解释:
(1)其中root就是我们的根用户,Host指定的是允许登录的主机ip,如果是%就表明运行在任意ip登录
(2)其余三个账号是就不用管了,本来就有的。
(3)在表中用户password是加密的,所以我们看不到
(2)创建用户
我们不能直接往user表中insert数据,应该使用专门的创建用户语法
- 语法: CREATE USER ‘用户名’@‘地址’ IDENTIFIED BY ‘密码’;
-- 创建一个zhangsan用户,密码111111
create user 'zhangsan'@'localhost' identified by '111111';
-- 创建一个lisi用户,密码123
create user 'lisi'@'%' identified by '123'; -- 其中统配符 % 表示可以在任意ip主机上使用这个账户登录
-- 2 查询user表
select * from user;
cmd中也能用lisi用户登录:
(3)删除用户
- 语法:DROP USER ‘用户名’@‘主机名’;
-- 删除'zhangsan'@'localhost'用户
drop user 'zhangsan'@'localhost';
-- 删除'lisi'@'%'用户
drop user 'lisi'@'%';
(4)修改用户密码
- 语法: ALTER USER ‘username’@‘host’ IDENTIFIED BY ‘new_password’;
根据mysql版本不同,这个语法也有些不同
当然,这个连root用户密码都可以这样修改
-- 修改 'lisi'@'%' 用户的密码为666666
ALTER USER 'lisi'@'%' IDENTIFIED BY '666666';
(5)mysql中忘记了root用户密码怎么办?
这个就有点麻烦了,这里就不演示了,直接参考视频
- step1:cmd --> net stop mysql
停止mysq1服务
需要管理员权限运行该cmd - step2:使用无验证方式启动mysql服务: mysqld --skip-grant-tables
- step3:打开一个新的cmd窗口,直接输入mysql命分,敲回车。就可以登录成功
- step4:use mysql;
- step5:update user set password = password(‘你的新密码’) where user =‘root’;
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘new_password’;
ALTER USER ‘root’@‘%’ IDENTIFIED BY ‘new_password’;
这个根据你有没有%这种所有ip都能访问的root账号选择(所以这个很麻烦),通常情况下mysql只会给你创建一个’root’@‘localhost’,但也说不定
这个就是上面修改用户密码,有好几种语法·,根据mysql的般本不同有的可能不行了,多找几个试试 - step6:关闭两个窗口
- step7:打开任务管理器,手动结束mysqld.exe 的进程
- step8:启动mysql服务
- step9:使用新密码登录。
2 用户权限授予
参考视频
(1)查询某个用户权限
- 语法:SHOW GRANTS FOR 用户名;
-- 查询 ‘lisi’@‘%’ 用户的权限
show grants for 'lisi'@'%';
可以看到只有一个usage(登入)的权限
-- 查询root用户的权限
show grants for 'root'@'localhost';
可以看到root有所有的权限,select,insert等等
(2)授予某个用户某些权限
- 语法: grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
可以使用通配符,看下面例子
-- 给 'lisi'@'%' 用户授予查询db01.tb_emp表的权限
grant select on db01.tb_emp to 'lisi'@'%';
-- 给 'lisi'@'%' 用户授予查询db01下所有表的权限
grant select on db01.* to 'lisi'@'%';
-- 给 'lisi'@'%' 用户授予查询,插入,更新,删除db01.tb_emp表的权限
grant select,insert,update,delete on db01.tb_emp to 'lisi'@'%';
-- 给张三用户授予所有权限,在任意数据库,在任意表上,想当于root权限
grant all privileges on *.* to 'zhangsan'@'localhost';
(3)撤销某个用户某些权限
- 语法:revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;
-- 撤销 'lisi'@'%' 用户对db01.tb_emp表的查询权限
revoke select on db01.tb_emp from 'lisi'@'%';
-- 撤销 'lisi'@'%' 用户对db01.tb_emp表的所有权限
revoke all privileges on db01.tb_emp from 'lisi'@'%';
-- 撤销;’zhangsan'@'localhost'用户的所有权限, 撤销后,只会剩下USAGE登入权限
revoke all privileges on *.* from 'zhangsan'@'localhost';