标题:基础管理
1.实践:
1.技能框架-思维导图
2.清单-规划好时间
3.操作-习题的方式
4.文档-历史,部署,功能介绍,基本管理,原理
5.原理叙述,照着读
6.整理数据以及小结
【1】技能框架
【2】清单-规划
【3】习题一
1.单实例如何启动以及关闭
1.启动 systemctl start mysqld 2.关闭 systemctl stop mysqld
2.多实例如何启动以及关闭
1.启动 systemctl start mysqld3307 systemctl start mysqld3308 2.关闭 systemctl stop mysqld3307 systemctl stop mysqld3308
3.单实例以及多实例的登陆方式,以及区别
1.单实例 本地登陆:mysql -uroot -p -S /data/mysql/data/mysql.sock 远程登陆:mysql -uroot -h 10.0.1.51 -p 2.多实例 本地登陆:mysql -uroot -p -S /data/3307/mysql.sock 远程登陆:mysql -uroot -p -h 10.0.1.51 -P3307 3.区别 本地登陆:都需要用户,以及用户密码,以及sock文件 远程登陆:都是需要用户以及密码,不同的是,多实例需要指定端口号 4.注意 刚刚初始化完的数据,版本5.7开始只有本地登陆方式,不过本地登陆方式没有密码,需要设置,并且创建远程登陆用户白名单。
4.单实例以及多实例的安全模式,以及区别
1.单实例 mysqld --skip-grant-tables --skip-networking 2.多实例 mysqld --skip-grant-tables --skip-networking --defaults-file=/data/3307/my.cnf 3.区别 多实例进入安全模式需要指定配置文件
5.如何进入安全模式修改密码
1.停掉数据库 pkill mysqld 2.进入安全模式 单实例以及多实例跳过授权表,以及网络,进入安全模式后 3.刷新授权表 由于跳过授权表,无法修改用户密码,所以要刷新授权表-命令:flush privileges 4.修改密码 alter user user@'10.0.1.51' identified by '123'; 5.关闭数据库 pkill mysqld 6.重启数据库
【4】习题二
1.如何创建用户
1.远程登陆用户 create user admin@'10.0.1.%' identified by '123'; 2.本地登陆用户 create user admin@'localhost' identified by '123';
2.如何删除用户
drop user admin@'10.0.1.%' ;
4.如何查询用户
select user ,host from mysql.user;
5.如何设置用户密码
1.设置初始密码 单实例:mysqladmin -uroot -p password '123' 多实例:mysqladmin -uroot -p -P3307 password '123'
6.如何修改用户密码
1.内部设置密码 本地:alter user admin@'10.0.1.%' identified by '456'; 远程:alter user admin@'localhost' identified by '456'; 2.不登陆修改密码 单实例本地:mysqladmin -uroot -p password '123' 多实例本地:mysqladmin -uroot -p -S /data/3307/mysql.scok password '123' 单实例网段:mysqladmin -uroot -h 10.0.1.% -p password '123' 多实例网段:mysqladmin -uroot -p -h10.0.1.% -P3307 password '123'
7.用户的表现形式有哪些?
1.白名单主要是本地方式 2.白名单主要是网段的方式
8.用户的定义规范
1.不能是数字开头 2.不能是关键字 3.必须与业务相关
【5】习题三
1.如何设置权限
普通管理员:grant 权限 on *.* to 用户@'白名单'; 超级管理员:grant 权限 on *.* to 用户@'白名单' with grent option;
2.如何查询用户权限
show grants for 用户@'白名单';
3.如何移除权限?
revoke 权限 from 用户@'白名单';
4.开一个超级管理员用户Admin,能通过10.0.1.%这个网段管理MySQL
grant all on *.* to Admin@'10.0.1%' with grant option;
5.开一个应用用户,通过10.0.1.%网段,对app库下的表进行查询,修改的操作
1.创建用户 create user admin@'10.0.1.%' identified by '123'; 2.授权 grant select ,update ,insert on app.* to admin@'10.0.1.%';
6.查看用户所拥有的权限
show grants for admin@'10.0.1.%';
【6】案例
1.公司中应用开发人员需要申请生产用户,你应该如何沟通,思路是什么?
为了保证数据库的安全,只能给开发人员select,update,insert权限,毕竟我们的职责是保证数据的安全。
2.开发人员给你要管理员用户,你给还是不给?
看情况,非必须的情况下,不给,尽量说明为什么不给,因为要保证数据的安全,如果非要给,让他向上级申请并且给我发一份邮件,才可以。
2.文档
【1】用户管理
1.1 用户的定义
引入:
用户的定义,就是用户的表现形式,也就是说代表这个人的身份。Linux中用户是一个字符串,也就是表现为:test 。其中test就是Linux中用户的表现形式,而设置用户是来干什么的呢?
Linux中设置用户是用来登陆的操作系统,以及管理操作系统的,对操作系统中的目录文件等,进行增删改查。
而MySQL数据不一样,它的用户形式是用户名@'限制条件',也即使用户名加上白名单,如果白名单不同,那么用户就是不同,MySQL数据库的用户是有两部分组成。同理,设置数据库用户也是对系统进行操作,不过数据库用户面对操作的对象 是MySQL系统,而Linux面对的操作系统。
小结:
linux:用户名表示用户,例如:user
MySQL数据库:用户名@'白名单'表示用户,例如:user@'localhost'
扩展:
数据库用户的定义类型: user@'localhost' 代表着本地登陆 了解 user@'10.0.1.%' 代表着10.0.1.x/24 网段 重点 user@'10.0.1.51' 代表着只能10.0.1.51网段登陆 重点 user@'%' 代表着所有 了解 user@'10.0.1.5%' 代表着10.0.1.50-59的网段 重点 user@'10.0.1.0/255.255.254.0' 代表着10.0.1.0/255.255.254.0网段 重点 1.2 建立用户的规范
1.用户不能用数字开头 2.用户不能是保留字符 3.用户名要和业务有关
1.4 用户的作用
Linux用户的作用: 登陆系统 管理系统
MySQL数据库用户的作用: 登陆数据库 管理数据库内容 1.5 用户的管理命令
(1)创建用户
1.创建用户 create user Admin@'10.0.1.%'; 2.创建用户并设置密码 create user Admin@'10.0.1.%' identified by '123';
(2)查询用户
1.命令 select user ,host from mysql.user;
(3)删除用户
1.命令 drop user Admin@'10.0.1.%';
(4)修改用户密码
1.命令 alter user Admin@'10.0.1.%' identified by '456';
1.6 扩展
1.如何查询库
show databases;
2.如何查询库中有那些表?
show tables;
3.如何查询表中的列?
desc tables t1;
【2】权限管理
2.1 权限的定义
引入:
Linux中用户有其对应的权限,能够限制用户能够做些什么,限制了用户的行为规范,也就是保证了数据库的安全。而数据库中同样,对于用户也有其对应的权限,通过权限的管理能够最大程度的保护好数据库中的数据。
数据库权限的定义:
1.全部-普通用户 ALL 2.类型-普通用户 SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE 3.超级管理员权限-给用户授权 with grant option
Linux中权限定义 r 可读 w 可写 x 可执行 小结:
无论是操作系统还是数据库系统,都是通过设置权限,限制用户行为,来保障系统的安全。
2.2 权限对用户的作用
控制用户,能够对数据库对象做哪些操作.
2.3 授权命令说明
(1)命令
grant all on *.* to Admin@'%' identified by '123';
(2)格式
grant 权限 on 对象 to 用户 identified by '密码';
(3)说明
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bF8U5KCV-1573205375638)(2.基础管理.assets/权限命令.jpg)]
2.4权限管理命令
【1】授权
grant all on *.* to user@'10.0.1.%' identified by '123';
【2】查询权限
show grants for user@'10.0.1.%';
【3】授权超级管理员用户
grant all on *.* to user@'10.0.1.%' with grant option;
【4】回收权限
revoke select on *.* from user@'10.0.1.0';
2.5 习题
(1) 创建和授权一个管理员用户admin,能够通过10.0.1.%网段管理数据库
grant all on *.* to admin@'10.0.1.%' identified by '123';
(2) 授权一个业务用户admin能够通过10.0.1%网段访问test库下的所有表
grant all on test.* to admin@'10.0.1.%';
【3】版本新特性
(1)用户管理方面
5.7版本开始做了安全策略,新建初始数据库,只允许本地登陆,想要远程访问必须要创建用户。版本5.7以前默认用户有很多,5.7加强了安全策略。
(2)权限方面
8.0版本增加了role功能,可以一次性定义多个库,而且8.0版本开始,授权时必须要先有用户,否则会报错。
【4】案例
1.公司中开发人员需要申请生产用户,你如何和他沟通?
首先,开发申请用户,只能给他select,update,insert 三种权限
2.开发人员找你要超级管理员用户,你给还是不给?
看当时情况,尽量不给,毕竟要保证数据库的安全性,另外如果非要给的话,写一份邮件向上级申请,上级同意之后才给,或者让他给上级申请,并且给自己发邮件,这样才给
【5】注意
数据库的权限是叠加的,授权A权限和授权B权限,最终权限是A+B权限。所以数据库的权限是回收权限