MySQL 小复习(二)| MySQL 安全优化(授权)| 含 Redis
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL 小复习(二)| MySQL 安全优化(授权)| 含 Redis,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4752字,纯文字阅读大概需要7分钟。
内容图文
![MySQL 小复习(二)| MySQL 安全优化(授权)| 含 Redis](/upload/InfoBanner/zyjiaocheng/861/a6aafc188e6047babcc998ec7864bf3f.jpg)
文章目录
①MySQL 安全优化(授权)
在 MySQL 中,权限的设置非常重要,分配权限可以清晰地划分责任,管理人员只需要关注自己的任务即可,最重要的还是保证系统数据的安全(删库跑路?)
权限控制出于安全因素来考虑,主要遵循以下几个经验原则:
- 只授予能满足需要的最小权限,防止用户误操作和干坏事
- 创建用户的时候限制用户的登录主机,一般是限制成指定 IP 或内网 IP 段
- 初始化数据库时删除没有密码的用户,因为安装完数据库时会自动创建一些用户,这些用户默认没有密码
- 为每个用户设置满足密码复杂度的密码
- 定期清理不需要的用户,如回收权限或删除用户
--GRANT语句--
1.专门用来设置数据库用户的访问权限
2.当指定的用户名不存在时,GRANT语句将会创建新的用户
3.当指定的用户名存在时,GRANT语句用于修改用户信息
--命令格式--
GRANT [权限列表] ON [数据库名.表名] TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
--详解--
权限列表:
1.用于列出授权使用的各种数据库操作,以逗号进行分隔
2.如“select,insert,update”
3.使用“all”表示所有权限,可授权执行任何操作
数据库名.表名:
1.用于指定授权操作的数据库和表的名称,其中可以使用通配符“*”
2.例如,使用“xcf.*”表示授权操作的对象为 xcf 数据库中的所有表
用户名'@'来源地址:
1.用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接
2.来源地址可以是域名、IP 地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址
3.如“%.xcf.com”、“192.168.126.%”等
IDENTIFIED BY:
1.用于设置用户连接数据库时所使用的密码字符串
2.在新建用户时,若省略“IDENTIFIED BY”部分, 则用户的密码将为空
--示例--
1.允许用户wangsan在本地查询 class 数据库中所有表的数据记录,但禁止查询其他数据库中的表的记录
GRANT select on class.* to 'wangsan'@'localhost' identified by '123123';
2.允许用户wangsan在本地远程连接 mysql ,并拥有所有权限
GRANT ALL PRIVILEGES ON *.* TO 'wangwu'@'localhost' IDENTIFIED BY '123123';
②Redis 的三种架构(主从复制/哨兵模式/群集模式)(工作原理)
主从复制:
![MySQL 小复习(二)| MySQL 安全优化(授权)| 含 Redis - 文章图片](/upload/getfiles/0001/2021/5/7/20210507020447365.jpg)
- Slave 端会向 Master 端发送 SYNC 请求同步连接
- 无论是第一次连接还是重新连接,Master 都会启动一个后台进程,将数据快照保存到数据文件中(执行 RDB 操作),同时 Master 还会记录修改数据的所有命令并缓存在数据文件中
- 后台进程完成缓存操作之后,Master 就会向 Slave 发送数据文件,Slave 端将数据文件保存到硬盘上,然后将其加载到内存中,接着 Master 就会将修改数据的所有操作一并发送给 Slave 端;若 Slave 出现故障导致宕机,则恢复正常后会自动重新连接
Master 收到 Slave 端的连接后,将其完整的数据文件发送给 Slave 端,如果 Mater 同时收到多个 Slave 发来的同步请求,则 Master 会在后台启动一个进程以保存数据文件,然后将其发送给所有的 Slave 端,确保所有的 Slave 端都正常
主从复制是哨兵和集群能够实施的基础(高可用)
哨兵模式:
- 哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的 Redis 工作节点是否正常
- 当 Master 出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个 Master 的确出现问题,然后会通知哨兵间推选出一个哨兵来进行故障转移工作(由该哨兵来指定哪个 slave 来做新的 master)
- 然后从 Slaves 中选取一个作为新的 Master(筛选方式是哨兵互相发送消息,并且参与投票,票多者当选)
补充一点:,客观下线是主节点才有的概念,即如果从节点与哨兵节点发送故障,被哨兵主管下线后,将不会有后续的客观下线和故障转移操作(即哨兵模式只负责 Master 的方面,而不管 Slaves)
- 当某个哨兵发现主服务器挂掉了,会将 master 中的 SentinelRedistance 中的 master 改为SRI_S_DOWN(主观下线),并通知其他哨兵,告诉他们发现 master 挂掉了
- 其他哨兵在接收到该哨兵发送的信息后,也会尝试去连接 master,如果超过半数(配置文件中设置的)确认 master 挂掉后,会将 master 中的 SentinelRedistance 中的 master 改为 SRI_O_DOWN(客观下线)
群集模式:
- Redis 集群引入了哈希槽的概念,有 16384 个哈希槽(编号 0~16383)
集群的每个节点负责一部分哈希槽,每个 Key 通过 CRC16 校验后对 16384 取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作 - 以 3 个节点组成的集群为例
- 节点 A 包含 0~5469 号的哈希槽
- 节点 B 包含 5461~10922 号的哈希槽
- 节点 C 包含 10923~16383 号的哈希槽
- 集群中具有 A、B、C 三个节点,如果节点 B 失败了,整个集群就会因为缺少 5461~10922 这个范围的槽而不可用
为每个节点添加一个从节点(a、b、c),即整个集群便有了三个 Master 节点和三个 slave 节点,在节点 B 失败后,集群选举 b 为主节点继续服务,当 B 和 b 都失败后,整个集群将不可用
③Redis 持久化方式有哪些
什么是持久化:
- Redis 是内存数据库,数据都存储在内存中,为了避免服务器断电等原因导致 Redis 进程推出后导致数据的永久丢失,需要定期将 Redis 中的数据以某种形式(数据或命令)从内存保存到硬盘中
- 这样当 Redis 重启时,就能利用持久化文件实现数据恢复
- 除此之外,为了进行容灾备份,建议将持久化文件拷贝至一个远程位置
Redis 提供两种方式进行持久化:
- RDB 持久化 :原理是将 Reids 在内存中的数据库记录定时保存到磁盘上
- AOF 持久化:原理是将 Reids 的操作日志以追加的方式写入文件,类似于 MySQL 的 binlog
由于 AOF 持久化的实时性更好,即当进程意外退出时丢失的数据更少,因此 AOF 是目前主流的持久化方式
内容总结
以上是互联网集市为您收集整理的MySQL 小复习(二)| MySQL 安全优化(授权)| 含 Redis全部内容,希望文章能够帮你解决MySQL 小复习(二)| MySQL 安全优化(授权)| 含 Redis所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。