※食用指南:文章内容为‘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——保护数据库
通常在服务器上的某个地方有一个数据库,如果不注重安全性,别人可以访问和滥用数据
保障数据安全的用户账户和权限问题
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