插入mysql的新用户_SQL添加新用户(上) - .NET爱好者,网络篇 - 博客园

1.sp_addlogin

创建新的SQL Server登录,该登录允许用户使用SQL Server身份验证连接到SQL Server实例。

语法sp_addlogin[ @loginame =] 'login'

[ ,[ @passwd =] 'password']

[ ,[ @defdb =] 'database']

[ ,[ @deflanguage =] 'language']

[ ,[ @sid =] sid ]

[ ,[ @encryptopt=] 'encryption_option']

参数

[ @loginame =] 'login'

登录的名称。login的数据类型为sysname,无默认值。

[ @passwd =] 'password'

登录的密码。password的数据类型为sysname,默认值为NULL。安全说明:

不要使用空密码。请使用强密码。

[ @defdb =] 'database'

登录的默认数据库(在登录后登录首先连接到该数据库)。database的数据类型为sysname,默认值为master。

[ @deflanguage =] 'language'

登录的默认语言。language的数据类型为sysname,默认值为NULL。如果未指定language,则新登录的默认language将设置为服务器的当前默认语言。

[ @sid =] 'sid'

安全标识号(SID)。sid的数据类型为varbinary(16),默认值为NULL。如果sid为NULL,则系统将为新登录生成SID。不管是否使用varbinary数据类型,NULL以外的值的长度都必须正好是16个字节,并且一定不能已经存在。指定sid非常有用,例如,如果您要编写脚本,或将SQL Server登录从一台服务器移动到另一台服务器,并且想让登录在不同服务器上使用相同的SID,都需要指定它。

[ @encryptopt =] 'encryption_option'

指定是以明文形式,还是以明文密码的哈希运算结果来传递密码。注意,不进行加密。在本讨论中使用“加密”一词是为了向后兼容。如果传入明文密码,将对它进行哈希运算。哈希值将存储起来。encryption_option的数据类型为varchar(20),可以是下列值之一:值 说明

NULL 以明文形式传递密码。这是默认设置。

skip_encryption 密码已经过哈希运算。数据库引擎应存储值,且不对其重新进行哈希运算。

skip_encryption_old 所提供的密码由SQL Server的早期版本进行哈希运算。数据库引擎应存储值,且不对其重新进行哈希运算。提供该选项只是为了升级。

返回代码值

0(成功)或1(失败)

备注

SQL Server登录名可以包含1到128个字符,其中包括字母、符号和数字。登录名不能包含反斜杠(\);它可以是保留登录名,例如sa或public,或已经存在;或者是NULL或空字符串('')。

如果提供默认数据库的名称,则不用执行USE语句就可以连接到指定的数据库。但是,除非数据库所有者授予您(使用sp_adduser或sp_addrolemember或sp_addrole)该数据库的访问权,否则不能使用默认的数据库。

SID号是一个GUID,用于唯一地标识服务器中的登录名。

更改服务器的默认语言将不会更改现有登录的默认语言。若要更改服务器的默认语言,请使用sp_configure。

如果在将登录名添加到SQL Server时已对密码进行了哈希运算,则使用skip_encryption来取消密码哈希运算将是有用的。如果SQL Server的早期版本对密码进行了哈希运算,则使用skip_encryption_old。

不能在用户定义事务内执行sp_addlogin。

下表显示了数个与sp_addlogin一起使用的存储过程。存储过程 说明

sp_grantlogin 添加Windows用户或组。

sp_password 更改用户密码。

sp_defaultdb 更改用户的默认数据库。

sp_defaultlanguage 更改用户的默认语言。

权限

需要ALTER ANY LOGIN权限。

示例

A.创建SQL Server登录

以下示例为用户Victoria创建SQL Server登录,密码为B1r12-36,并且不指定默认数据库。复制代码

EXEC sp_addlogin 'Victoria', 'B1r12-36';

GO

B.创建具有默认数据库的SQL Server登录

以下示例为用户Albert创建SQL Server登录,密码为B5432-3M6,默认数据库为corporate。复制代码

EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';

GO

C.创建具有不同默认语言的SQL Server登录

以下示例为用户TzTodorov创建SQL Server登录,密码为709hLKH7chjfwv,默认数据库为AdventureWorks,默认语言为Bulgarian。复制代码

EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks', N'?????????'

D.创建具有特定SID的SQL Server登录

以下示例为用户Michael创建SQL Server登录,密码为B548bmM%f6,默认数据库为AdventureWorks,默认语言为us_english,SID为0x0123456789ABCDEF0123456789ABCDEF。复制代码

EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF

2. sp_adduser

向当前数据库中添加新的用户。

语法sp_adduser [ @loginame =] 'login'    [ ,[ @name_in_db =] 'user']    [ ,[ @grpname =] 'role']

参数

[ @loginame =] 'login'

SQL Server登录或Windows登录的名称。login的数据类型为sysname,无默认值。login必须是现有的SQL Server登录名或Windows登录名。

[ @name_in_db =] 'user'

新数据库用户的名称。user的数据类型为sysname,默认值为NULL。如果未指定user,则新数据库用户的名称默认为login名称。指定user将为数据库中新用户赋予一个不同于服务器级别登录名的名称。

[ @grpname =] 'role'

新用户成为其成员的数据库角色。role的数据类型为sysname,默认值为NULL。role必须是当前数据库中的有效数据库角色。

返回代码值

0(成功)或1(失败)

备注

sp_adduser还将创建一个具有该用户名的架构。

在添加完用户之后,可以使用GRANT、DENY和REVOKE等语句来定义控制用户所执行的活动的权限。

使用sys.server_principals可显示有效登录名的列表。

使用sp_helprole可显示有效角色名的列表。当指定一个角色时,用户会自动地获得那些为该角色定义的权限。如果未指定角色,则用户获得的权限将是授予默认public角色的权限。若要将用户添加到角色,必须提供user name的值。((username可与login_id相同。)

用户guest已经存在于每个数据库中。如果此前禁用了用户,则添加用户guest可启用该用户。默认情况下,会在新数据库中禁用用户guest。

不能在用户定义事务内执行sp_adduser。

您不能添加guest用户,因为guest用户已经存在于每个数据库内。若要启用guest用户,请按如下方式授予guestCONNECT权限:复制代码

GRANT CONNECT TO guest;

GO

权限

要求具有数据库的所有权。

示例

A.添加数据库用户

以下示例使用现有的SQL Server登录名Vidur,将数据库用户Vidur添加到当前数据库中的现有Recruiting角色。复制代码

EXEC sp_adduser 'Vidur', 'Vidur', 'Recruiting'

B.添加数据库用户(使用相同的登录ID)

以下示例将用户Arvind添加到SQL Server登录名Arvind的当前数据库。该用户属于默认的public角色。复制代码

EXEC sp_adduser 'Arvind'

C.添加数据库用户(使用不同于其服务器级别登录的名称)

以下示例将SQL Server登录名BjornR添加到具有用户名Bjorn的当前数据库,并将数据库用户Bjorn添加到Production数据库角色。复制代码

EXEC sp_adduser 'BjornR', 'Bjorn', 'Production'

例子:

添加用户名:bt,密码:111pain

execute sp_addlogin 'bt','111pain'

go

execute sp_adduser 'bt','bt','db_owner'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值