八年数据库之路的感悟,角色与权限

需要别人远程你的数据库,首先需要的是在一个局域网内,或者连接的是同一个路由器,接下来就是具体步骤:

  时间过的很快,从在博客园写第一篇文章当现在刚好一年,而自己在数据库这条路上已经走过八年。回想下这八年感觉总是在【迷茫-激动-充实-迷茫-激动-充实】的循环中。本篇也分享一下这些迷茫激动充实和美好的愿景。

1.在SQL Server中,用户和角色是分为服务器级别和数据库级别的

(一)首先是要检查SQLServer数据库服务器中是否允许远程链接。其具体操作为:

  古有大诗仙怀才不遇,诗书纵情于山水,今有小人物蓝瘦香菇,博文感悟与园友。

2.服务器级别

登录名:指有权限登录到某服务器的用户,例如超级管理员的登录名是sa;

              登录名具体位置在  数据库——>安全性——>登录名

              图片 1

 

服务器角色:为帮助您管理服务器上的权限,SQL Server 提供了若干角色,这些角色是用于对其他主体进行分组的安全主体。 服务器级角色
的权限作用域为服务器范围。SQL Server 提供了九种固定服务器角色, 无法更改授予固定服务器角色的权限,这9组角色分别如下:
sysadmin         —— 在SQL Server中进行任何活动,该角色的权限跨越所有其它固定服务器角色
serveradmin   —— 更改服务器范围内的配置选项并关闭服务器
setupadmin     —— 添加和删除链接服务器,并执行某些系统存储过程(如 sp_serveroption)
securityadmin —— 授予数据库引擎的访问权限和配置用户权限的能力使得安全管理员可以分配大多数服务器权限,securityadmin 角色应视为与sysadmin 角色等效
processadmin   —— 管理在 SQL Server 实例中运行的进程
dbcreator          —— 创建和改变数据库,但是没有读取权限
diskadmin          —— 管理磁盘文件
bulkadmin          —— 执行 BULK INSERT 语句
public                 —— 每个 SQL Server 登录名均属于 public 服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权
限,该用户将继承授予该对象的 public 角色的权限。当您希望该对象对所有用户可用时,只需对任何对象分配 public 权限即可。
您无法更改 public 中的成员关系。public 的实现方式与其他角色不同,但是,可以从 public 授予、拒绝或撤销权限。

           服务器角色具体位置在  数据库——>安全性——>服务器角色

           图片 2

 

注意:
>>登录名一定属于某些角色,默认为public
>>服务器角色不容许更改
>>登录后也不一定有权限操作数据库

(1)打开数据库,用本地帐户登录,右击第一个选项,选择属性:

成长

  IT民工,程序猿,救火队,刚刚踏入IT界,这些词就早已经如雷贯耳,电脑坏了不会修?你是做IT的?

  抛开残酷的现实,寻找那最初的美好,每个人踏入这个行业从小白开始都会抱有成为一个称做“行业专家”的理想。

  我也不例外,刚刚毕业有过好多目标,写程序,做BI,业务设计,项目管理......就像熊瞎子劈苞米,劈一个扔一个,最后什么也没剩下!(好像现在的新同学会更有感触,因为现在的技术花样更多了)

  工作三年后,走过迷茫期,我坚定地选择了数据库DBA这条路,决定走下去并义无反顾。oracle科班出身的我,因为工作和自己的一点小兴趣选择了SQL Server。

3.数据库级别

用户:指有权限能操作数据库的用户;

          用户具体位置在  数据库——>某个具体库——>安全性——>用户

          图片 3

 

        

数据库角色:SQL Server 中有两种类型的数据库级角色:数据库中预定义的“固定数据库角色”和您可以创建的“灵活数据库角色”
固定的有某些权限的数据库角色,所有数据库中都有这些角色,默认有10个,分别如下;

public
--public 角色是一个特殊的数据库角色,每个数据库用户都属于它。public 角色:
 >>捕获数据库中用户的所有默认权限。
 >>无法将用户、组或角色指派给它,因为默认情况下它们即属于该角色。
 >>包含在每个数据库中,包括 master、msdb、tempdb、model 和所有用户数据库。
 >>无法除去。

db_owner
--进行所有数据库角色的活动,以及数据库中的其它维护和配置活动。
--该角色的权限跨越所有其它固定数据库角色。

db_accessadmin
--在数据库中添加或删除 Windows NT 4.0 或 Windows 2000 组和用户以及 SQL Server 用户。

db_datareader
--查看来自数据库中所有用户表的全部数据。

db_datawriter
--添加、更改或删除来自数据库中所有用户表的数据

db_ddladmin
--添加、修改或除去数据库中的对象(运行所有 DDL)

db_securityadmin
--管理 SQL Server 2000 数据库角色的角色和成员,并管理数据库中的语句和对象权限

db_backupoperator
--有备份数据库的权限

db_denydatareader
--拒绝选择数据库数据的权限

db_denydatawriter
--拒绝更改数据库数据的权限

        数据库角色具体位置在  数据库——>某个具体库——>安全性——>角色——>数据库角色

       图片 4

 

注意:请不要将灵活数据库角色添加为固定角色的成员,这会导致意外的权限升级。

 

架构:架构(Schema)是一组数据库对象的集合,它被单个负责人(可以是用户或角色)所拥有并构成唯一命名空间。可以将架 

构看成是对象的容器。

 >>数据库用户对应于服务器登录名以便登录者可以操作数据库
 >>数据库角色可以添加,可以定制不同权限  
 >>数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象

      架构数据库角色具体位置在  数据库——>某个具体库——>安全性——>架构

      图片 5

 

图片 6

 耐得住寂寞

  看书,学习的最基本途径,看不下去就抄!原理性的东西也许只能这样获取到(也可能是我比较笨),不断的学,模拟,思考。还记得《SQL Server 2005技术内幕》四本书,绝对是我的启蒙老师,至今仍然收藏,时不时拿起来翻看。

  这个过程很多人感觉特别枯燥,无法坚持。也许像我这样的人可能不太大众,我反而觉得这个过程特别的激动,每天都学到很多新东西又特别的充实。

4.数据库级别设置

服务器级 -> 数据库级 -> 架构级 - > 数据对象级,比如说:Server.DataBase1.dbo.Table1;这里的意思就是Table1这个表属于dbo这
个架构,dbo这个架构属于DataBase1这个数据库,DataBase1这个数据库属于Server这个服务器。里面的架构其实就是一个容器,好像
就是面向对象里面的命名空间,一个用户可以拥有多个架构,但是不能对没有拥有的架构进行操作。一个数据库角色,是对不同架构里
面数据对象的权限组织,也有可能涉及到多个架构,当某一个用户被转换成一种数据库角色的时候,假如这个用户本身不拥有某一个架
构而该数据库角色拥有,那它当它对那个架构进行操作的时候就会出错。

(2)在打开的属性窗口,在其右边点击“连接”,然后再左侧勾上“允许远程连接到此服务器”:

 打破迷茫

  很多时候学习和数据库系统一样会遇到瓶颈,这样的瓶颈如果处理好,那么你就是阶段成长,跳到了下一个阶段,如果没处理好,就会打回原形(劈苞米一样)。

  迷茫主要有两点:

  •   很多东西理解不了,有没有地方去问
  •   没有实践的环境,工作不匹配,有很难找到匹配的

  对于第一点,我当时就是在CSDN各种发帖,各种问(现在看看当时的问题,我真是厉害了不少呢,哈哈)。了解这种痛苦,所以请同样有这种苦恼,问题不知道像谁请教的同学加QQ群:302593467(群里我拉了不少SQL Server大神呦)

  对于第二点,这个真的没什么办法,看机遇了。不过一个建议:想要理想往往会牺牲一些(我的第一个数据库DBA相关工作比开发时工资少了一半)。当有一个实践的场景你的基础理论会大幅发挥出来,技能提升特别快。这就是传说中的一张窗户纸。

5.相互之间的关系

(1)登录名与数据库用户在服务器级别是一对多的,在数据库级别是一对一的
    登录名可以理解为进入整个大楼的钥匙,用户名可以理解为一个房间的钥匙,这里所说的大楼就是sql server服务器,而房间就是
这个sql server服务器中的具体的库,要注意登录名是存在于master数据库的syslogins表中,用户名是在各个具体的库下建立的(也就
是要先进入各个库), 最关键的是:一个登录名可以和多个不同库下的用户做映射,但是在同一个库下只能和一个用户做映射,并且一
个用户名可以和多个登录名有映射关系, 真正有权限的是用户名,只不过是用登录名去登进数据库,然后去找映射的用户名,这样就
有了相应的权限,刚开始建立的登录名只要把该登录名的服务器角色设置为Database Creator,就可以创建新的数据库了,并且新建立
的这个数据库中会自动生成两个用户名:dbo和guest。并且刚刚建立的登录名就和dbo映射了,还有就是rbo也和sa映射了,因为sa作为
管理员的登录名和每个库中的rbo用户映射。

(2)一个数据库角色有可能涉及多个架构,数据库角色对应的是权限
(3)一个用户对应一个数据库角色
(4)一个数据库用户可以对应多个架构(架构是表容器),架构里面包含的是数据库表。

图片 7

独当一面

  刚工作,给自己定了一个称做“行业专家”的理想,而期限是五年,而所谓的行业专家其实也只是能够在一个领域或技能上独当一面。在工作五年的时候基本上达到了我的预期,这个时候大部分的数据库问题我能够独立解决,出现问题也能理性的思考,并且慢慢整理思路不断学习。

  激动的感觉,满足的感觉。

6.用T_SQL创建用户和登录用户例子

-- 1.创建登录用户(在master库下面执行)
USE master
GO
CREATE LOGIN readonlylogin WITH password='abc123...';

-- 2.创建数据库只读用户(在某个用户数据库下面执行)
USE TestDB
GO
CREATE USER readonlyuser FROM LOGIN readonlylogin;

-- 3.将用户加入数据库角色,例如 所有者角色db_owner、只读角色db_datareader等(在某个用户数据库下面执行)
USE TestDB
GO
EXEC sp_addrolemember 'db_datareader', 'readonlyuser';

--EXEC sp_addrolemember 'db_owner', 'readonlyuser';----可以将用户关联到多个数据库角色中

--EXEC sp_droprolemember 'db_owner', 'readonlyuser'----从特定的数据角色中删除用户

-- 4.用我们刚刚创建的readonlylogin用户进行登录,登录时要注意将“选项(英文是Options)-->连接属性(Connection Properties)-->连接数据库(Connect to database)”改为我们的目标数据库例如TestDB下面

  注意:

  1.登录名和用户名可以起一样的名字;

  2.如果是在普通的SQL Server中,就按上面操作即可,如果微软云Azure中的SQL Server,可能有些语句不能用,例如use master,default_schema=dbo等

 

 

参考地址:

 

 再次迷茫

  程序猿的悲催在于活到老学到老,不能停下学习的脚步。这个时候在一个技能(SQL Server)的学习上,自己感觉不到那种突飞猛进的感觉,很多时候学习都是需要真实的遇到场景,踩过坑才能在坑中学习。而在一个公司当DBA总是维护着自己的系统,根本没有那么多坑去踩。很长的一段迷茫期不知道怎么办,所以我尝试了学习新东西,比如mysql,大数据相关的,甚至学习销售、营销等,但是我依然迷茫,不知要怎么走下一步。

(二)为微软SQL服务器(MSSQLServer)配置相应协议。

 偶然的机遇

  这也是我现在的公司,做SQL Server技术支持,在这里我遇到了很多志同道合的人,这里我们都是SQL Server技术的爱好者,一起研究技术,一起帮用户解决问题,这也让我自己意识到自己的很多很多不足,写了一年的博客不少人称我为大神,虽然有些小高兴,但内心我只能苦笑,因为我知道,凭借我的技术水平在公司的技术团队里,不是倒数第一也是倒数第二。

  但也正是有这样的机遇让我重新找到了方向,找到了一起奋斗的伙伴,也燃起了斗志。

 

 (1)依次选择:开始-〉所有程序-〉Microsoft SQL Server 2008-〉配置工具-〉SQL Server配置管理器,如下图所示:

技术支持的感悟

  因为做技术支持的工作,所以每天都能接触到不同的客户,他们有着这样活那样的数据库问题。对于我又像进入了一个新世界,这里一切都是那么不一样。

图片 8

 迷茫又至

  刚刚到公司,处理客户问题的时候总是打了鸡血一样,充满了激情,对于客户问题总是耐心讲解,甚至深入到原理,表、索引存储结构,为什么会出现这样的问题等等。但是时间长了,我发现很多客户的问题都是大同小异,很多客户的运维人员都是一知半解,甚至连什么是日志备份都不知道。

本文由ca88手机版登录发布于亚洲城ca88手机版官网,转载请注明出处:八年数据库之路的感悟,角色与权限

TAG标签: ca88手机版登录
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。