【基础8】SQL数据库安全管理

news/2024/7/23 11:13:10 标签: sql, 数据库, mysql
  1. 添加/删除 SQL登录账户

    sql">exec sp_addlogin '12123','QWQ12123'
    --			    '用户名' ,  '密码'
    create login qwq with password='QWQ12123'		--这种方式创建的用户名不能是纯数字
    --					   用户名      密码
    --删除SQL登陆账户
    exec sp_droplogin 12123
    
    drop login qwq
    
  2. 修改登录用户 用户名/密码

    sql">alter login qwq with password='qwq12123'	--修改密码  加'  '
    alter login qwq with name=qaq		  --修改用户名  不加'   ' qaq_server
    
  3. 创建数据库用户

    sql">use Sales
    go
    exec sp_grantdbaccess 'qaq' ,'qaquser'
    --					登录用户名 ,数据库用户名(可以与登录用户名一样)qaq_database
    --grant 授权  db 数据库   access  记录
    
    create user qaquser for login qaq
    --			数据库用户        登录用户
    
  4. 删除/修改 数据库用户

    sql">--删除数据库用户
    exec sp_revokedbaccess 'qaquser'
    --		revoke  撤销
    drop user qaquser
    
    --修改数据库用户
    alter user qaquser with name=qaq_user
    
    
  5. 授予权限

    sql">grant select on Employees to qaq_user
    --		查看         表          数据库用户
    
    grant exec on proc_销售额 to qaq_user
    --		执行     存储过程
    
    --更改连接后,验证对qaq登录用户的权限
    select * from Employees
    delete from Employees
    update Employees set 姓名='赵燕' where 编号='1001'
    
    declare @a int
    exec proc_销售额 '1301' ,@a output
    
    
  6. 撤销/禁用 权限

    sql">--撤销权限(更改连接——连接到windows后才能更改)
    revoke select on Employees to qaq_user
    revoke exec on proc_销售额 to qaq_user
    --错误:无法对 sa、dbo、实体所有者、information_schema、sys 或您自己授予、拒绝或撤消权限。
    
    --禁用权限(有这个权限不让你用)
    deny select on Employees to qaq_user
    deny exec on proc_销售额 to qaq_user
    
    
    
  7. 数据库的备份和恢复

    sql">--数据的导入和导出
    界面操作
    --数据备份和恢复
    --创建备份设备
    --devide 设备    第一个参数:设备类型  disk (硬盘),第二个参数: 逻辑文件名 Sales_bak  就表示sales库的备份	
    exec sp_addumpdevice 'disk','Sales_bak','D:\project\Sales_bak.bak'
    --											第三个参数:物理文件名(放在哪个文件夹),最后要加备份文件的文件属性:(.bak)
    --2、备份数据库
    backup database Sales to Sales_bak
    --备份   数据库    哪个库      库的逻辑文件名
    drop table Sell
    --恢复数据库
    restore database Sales from Sales_bak with replace				--恢复时不能在本库使用时恢复,建议在执行此操作时使用 master 数据库。
    --恢复   数据库     库  从     备份了的文件  以覆盖的方式
    
    
  8. 练习

    sql">--1、在SQL Server服务器上创建两个登录账户:
    --班主任登录账户:banzhuren   密码:111111
    --教师登录账户:jiaoshi   密码:123456
    
    exec sp_addlogin 'banzhuren','111111' 
    
    create login jiaoshi with password='123456'
    
    --2、在Xk数据库中创建两个用户:
    --班主任用户:banzhurenuser 对应于登录账户banzhuren
    --教师用户:jiaoshiuser对应于登录账户jiaoshi
    use XK
    go
    
    exec sp_grantdbaccess 'banzhuren' , 'banzhurenuser'
    
    create user jiaoshiuser for login jiaoshi 
    
    --3、为用户授权:
    --班主任用户 banzhurenuser 对表student具有查询、增加、修改、删除权限;
    --教师用户 jiaoshiuser 对表student具有查询权限。
    --教师用户 jiaoshiuser 对存储过程proc_选课情况3的调用权限。
    grant select,insert,update,delete on Student to banzhurenuser
    
    grant select on Student to jiaoshiuser
    
    grant exec on proc_学生选课情况3 to jiaoshiuser
    
    --4、以班主任及教员账户登录,对班主任banzhurenuser及教员jiaoshiuser的权限进行验证,
    --将学号为‘00000001’的同学的姓名改为‘林一斌’。
    --试用学号’00000001’,’ 00000025’,’ 000000001’调用存储过程proc_选课情况3,验证教师对存储过程的调用权限。
    
    --更改连接为——banzhuren
    select * from Student
    update Student set StuName='林一斌' where StuNo='00000001'
    
    --更改连接为——jiaoshi
    --调用
    declare @sum int ,@a int
    exec @a=proc_学生选课情况3 '00000001',@sum output
    print '返回值:'+cast(@a as char(1))
    
    --调用
    declare @sum int,@a int
    exec @a=proc_学生选课情况3 '00000025',@sum output
    print '返回值:'+cast(@a as char(1))
    
    --调用
    declare @sum int,@a int
    exec @a=proc_学生选课情况3 '000000001',@sum output
    print '返回值:'+cast(@a as char(10))
    
    
    --5、将表student和视图v_选课详情中的信息导出到stuInfo.xls表中。
    界面操作
    
    --6、在D:\project文件夹中创建备份设备Xk_bak,对数据库XK进行完整备份,
    --然后删除stucou表,再对数据库Xk进行恢复,验证stucou表是否恢复。
    --(1)创建备份设备
    exec xp_cmdshell 'mkdir D:\project'  , no_output
    exec sp_addumpdevice 'disk','XK_bak','D:\project\XK_bak.bak'
    
    --(2)备份数据库
    backup database XK to XK_bak
    
    --(3)删除StuCou表
    drop table StuCou
    
    --切换到master数据库  进行恢复
    restore database XK from XK_bak with replace
    
    --测试是否恢复
    select * from StuCou
    

http://www.niftyadmin.cn/n/343613.html

相关文章

chatgpt赋能Python-pythondir

Python dir命令:探索Python模块的秘密 如果你是一名Python开发者,那么你一定或多或少接触过dir这个命令。但是,你了解dir到底能做什么吗?这篇文章将会介绍dir命令的用途、用法以及一些有趣的技巧。 什么是dir命令 简单来说&…

chatgpt赋能Python-pythonfor循环5次

Python中for循环的使用方法及技巧 Python作为一种高级编程语言,其独特的语法结构和方便的操作方法受到了越来越多人的欢迎和喜爱。其中,for循环是Python程序员必备的基本技巧之一。在这篇文章中,我们将介绍Python中for循环的使用方法及技巧。…

亚马逊云科技 一周回顾 – 2022 年 7 月 18 日

上周,Amazon 峰会(纽约)在贾维茨中心线下举办,有数千名与会者以及 100 多家赞助商和合作伙伴参加。在主题演讲中,Amazon 首席开发人员倡导者 Martin Beeby 谈到了云基础设施的创新如何帮助客户适应挑战并抓住新的机遇。…

1.Mongodb单机-linux

一二进制文件 1.先到官网下载压缩包 mongod-linux-x86_64-4.0.10.tgz 2.上传压缩包到Linux中/opt,解压到当前目录 tar -xvf mongodb-linux-x86_64-4.0.10.tgz 3.移动解压后的文件夹到指定的目录中 mv mongodb-linux-x86_64-4.0.10 /usr/local/mongodb 4.新建几个目录…

【红队系列】外网信息收集(二)

红队系列 🔥系列专栏:红队系列 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2023年5月20日🌴 🍭作者水平很有限,如果发现错误&…

abc302 F 思维建图+dij

题意:给你n个集合,如果两个集合有公共元素,那么就可以合并,问你最小合并几次可以得到一个集合包含1和m。 思路:非常经典的套路建图,就是将集合和集合中的元素为两端,来建图。集合中的元素到集合…

基于单片机的家用应急电源设计

摘要 本设计基于STC89C52单片机设计得应急电源,以应急电源为研究对象,单片机设计为控制集成IC,ADC为模数转换控制模块,无源蜂鸣器作为报警电路。系统分为单片机设计最小系统,AD转换控制模块,电源电路&#…

什么是Java中的Lambda表达式?

在Java 8中引入了Lambda表达式,它是一种匿名函数,可以作为参数传递给方法或存储在变量中。Lambda表达式使得编写简洁、灵活的代码成为可能,并促进了函数式编程在Java中的使用。 Lambda表达式的基本语法如下: javaCopy code (par…