MySQL数据分析进阶(十四)保护数据库

※食用指南:文章内容为'CodeWithMosh'SQL进阶教程系列学习笔记,笔记整理比较粗糙,主要目的自存为主,记录完整的学习过程。(图片超级多,慎看!)

【中字】SQL进阶教程 | 史上最易懂SQL教程!10小时零基础成长SQL大师!!https://www.bilibili.com/video/BV1UE41147KC/?spm_id_from=333.1007.0.0&vd_source=b287f1f4a1fa54cc438e31a0f87ef4e2

目录:

第十四章:保护数据库

[1、SECURING DATABASE------保护数据库](#1、SECURING DATABASE——保护数据库)

[2、CREATING A USER------创建一个用户](#2、CREATING A USER——创建一个用户)

[3、VIEWING USERS------查看用户](#3、VIEWING USERS——查看用户)

[4、DROPPING USERS------删除用户](#4、DROPPING USERS——删除用户)

[5、CHANGING PASSWORDS------修改密码](#5、CHANGING PASSWORDS——修改密码)

[6、GRANTING PRIVILEGES------授予权限](#6、GRANTING PRIVILEGES——授予权限)

[7、VIEWING PRIVILEGES------查看权限](#7、VIEWING PRIVILEGES——查看权限)

[8、REVOKING PRIVILEGES------撤销权限](#8、REVOKING PRIVILEGES——撤销权限)


**第十四章:**保护数据库

1、SECURING DATABASE------保护数据库

通常在服务器上的某个地方有一个数据库,如果不注重安全性,别人可以访问和滥用数据

保障数据安全的用户账户和权限问题

2、CREATING A USER------创建一个用户

目前都是使用根用户连接到数据库服务器*(早期安装MySQL时创建的用户账号)*

当工作环境中使用MySQL时,需要创建其他用户,并赋予它们特定权限

假设正在创建一个网络或桌面应用程序,应用程序需要访问MySQL数据库的数据,要为应用程序创建一个用户账户,并授予阅读,将数据写入应用程序数据库的权限

这个用户账号++不能更改数据库的结构,不应该能够创建新表或删除现有表++

假设有人以数据库管理员的身份新加入机构,需要为此创建账户,以便可以管理一个或多个数据库或MySQL服务器

❗如何创建一个新的用户账户,涉及分配权限或特权

①创建命名用户

②选择限制用户的连接位置,键入计算机的IP地址

这个用户只能从同一台安装了MySQL的计算机连接,如果试图从另一台计算机连接,会被拒绝连接

在云环境中非常有用,通常有一个网络服务器和一个数据库服务器

在数据库服务器上为应用程序创建新用户账号时,确保那个用户账户只能从网络服务器连接,要指定网络服务器的IP地址

还可以指定一个主机名

代表当前安装了MySQL的这台计算机

指定域名

可以从该域中的任何计算机来连接,但无法从codewithpauleen.com的子网域连接

为解决该问题,添加一个通配符**%.**表示任何子网域,就可以从这个域的任何计算机或任何子网域连接了

删掉后面的限制,john就可以从任何地方链接,毫无限制

③为用户设置密码*(永远、绝对不要用1234这个密码,要用强密码,越长越好)*

3、VIEWING USERS------查看用户

查看MySQL服务器的用户列表

方法一

数据库中有一张表user

Host:表示用户的连接点

中间三个用户供MySQL自行使用,最后是根用户

所有的主机都是localhost,所以想用根用户身份登录,必须用这台计算机,不能远程连接并以根用户身份登录

方法二

4、DROPPING USERS------删除用户

有人离职需要删除他们的用户账户,这样他们就无法再访问MySQL服务器

记得把不再使用的用户账号删掉

5、CHANGING PASSWORDS------修改密码

作为数据管理人员,有时会需要更改别人的密码或者是自己的密码

方法一

第二个修改当前登录用户的密码,不管是根用户还是其他人

方法二

直接修改密码,或者expire passwaord(密码失效) ,强制该用户下次登陆时更改密码*(记得点Apply)*

6、GRANTING PRIVILEGES------授予权限

授权的两种情况

①普通用户

有一个网络或桌面应用程序,想允许这个应用程序在数据库中读写数据,没有拥有创建新表或修改现有表的权限(仅管理员)

假设有一个叫moon的应用程序,需要能够在sql store数据库中读写数据

a-创建账户

b-设置密码

c-授予权限*(SELECT,INSERT,UPDATE,DELETE,EXECUTE,通常是会周瑜应用程序用户一些典型权限)*

d-允许读取的数据库或者单独的表

e-指定用户账号*(如果用户账号有主机、IP地址或域名也需写明)*

f-用该用户账号连接到服务器

如果使用其他数据库就会报错

管理人员

新人加入团队,给一个或多个数据库,甚至整个MySQL服务器的管理权限

ALL最高级别的权限

***.***所有数据库所有表

查找特权完整列表在此处查询:mysql privileges

7、VIEWING PRIVILEGES------查看权限

想查看分配给一个用户账号的权限或特权

方法一

删掉FOR子句可以看到当前用户的权限

方法二

可以随时更改、应用

8、REVOKING PRIVILEGES------撤销权限

想撤销一个或多个权限,或他人滥用权限想撤销

moon_app该账号只能读写数据和执行存储过程,而不能创建视图

撤销方法:

注重安全性: 不要向用户授予多余的特权,尽量授予用户账号所需的最低权限,不然会帮系统捅出很多安全漏洞

------------TBC

相关推荐
搬码后生仔8 分钟前
SQLite 是一个轻量级的嵌入式数据库,不需要安装服务器,直接使用文件即可。
数据库·sqlite
码农君莫笑9 分钟前
Blazor项目中使用EF读写 SQLite 数据库
linux·数据库·sqlite·c#·.netcore·人机交互·visual studio
江上挽风&sty11 分钟前
【Django篇】--动手实践Django基础知识
数据库·django·sqlite
奥顺互联V12 分钟前
一次性部署:使用Docker部署PHP应用
大数据·mysql·开源·php
向阳121815 分钟前
mybatis 动态 SQL
数据库·sql·mybatis
胡图蛋.16 分钟前
什么是事务
数据库
小黄人软件18 分钟前
20241220流水的日报 mysql的between可以用于字符串 sql 所有老日期的,保留最新日期
数据库·sql·mysql
张声录123 分钟前
【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据
数据库·chrome·etcd
无为之士29 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
小汤猿人类43 分钟前
open Feign 连接池(性能提升)
数据库