SQL添加新用户(上)
2007-09-25 11:38
267 查看
1. sp_addlogin
创建新的 SQL Server 登录,该登录允许用户使用 SQL Server 身份验证连接到 SQL Server 实例。
语法
参数
[ @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),可以是下列值之一:
返回代码值
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 一起使用的存储过程。
权限
需要 ALTER ANY LOGIN 权限。
示例
A. 创建 SQL Server 登录
以下示例为用户 Victoria 创建 SQL Server 登录,密码为 B1r12-36,并且不指定默认数据库。
B. 创建具有默认数据库的 SQL Server 登录
以下示例为用户 Albert 创建 SQL Server 登录,密码为 B5432-3M6,默认数据库为 corporate。
C. 创建具有不同默认语言的 SQL Server 登录
以下示例为用户 TzTodorov 创建 SQL Server 登录,密码为 709hLKH7chjfwv,默认数据库为 AdventureWorks,默认语言为 Bulgarian。
D. 创建具有特定 SID 的 SQL Server 登录
以下示例为用户 Michael 创建 SQL Server 登录,密码为 B548bmM%f6,默认数据库为 AdventureWorks,默认语言为 us_english,SID 为 0x0123456789ABCDEF0123456789ABCDEF。
2. sp_adduser
向当前数据库中添加新的用户。
语法
参数
[ @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 用户,请按如下方式授予 guest CONNECT 权限:
权限
要求具有数据库的所有权。
示例
A. 添加数据库用户
以下示例使用现有的 SQL Server 登录名 Vidur,将数据库用户 Vidur 添加到当前数据库中的现有 Recruiting 角色。
B. 添加数据库用户(使用相同的登录 ID)
以下示例将用户 Arvind 添加到 SQL Server 登录名 Arvind 的当前数据库。该用户属于默认的 public 角色。
C. 添加数据库用户(使用不同于其服务器级别登录的名称)
以下示例将 SQL Server 登录名 BjornR 添加到具有用户名 Bjorn 的当前数据库,并将数据库用户 Bjorn 添加到 Production 数据库角色。
例子:
添加用户名:bt,密码:111pain
execute sp_addlogin 'bt','111pain'
go
execute sp_adduser 'bt','bt','db_owner'
创建新的 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。
安全说明: |
不要使用空密码。请使用强密码。 |
登录的默认数据库(在登录后登录首先连接到该数据库)。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 |
以下示例为用户 Albert 创建 SQL Server 登录,密码为 B5432-3M6,默认数据库为 corporate。
复制代码 | |
EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate'; GO |
以下示例为用户 TzTodorov 创建 SQL Server 登录,密码为 709hLKH7chjfwv,默认数据库为 AdventureWorks,默认语言为 Bulgarian。
复制代码 | |
EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks', N'?????????' |
以下示例为用户 Michael 创建 SQL Server 登录,密码为 B548bmM%f6,默认数据库为 AdventureWorks,默认语言为 us_english,SID 为 0x0123456789ABCDEF0123456789ABCDEF。
复制代码 | |
EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF |
向当前数据库中添加新的用户。
语法
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 用户,请按如下方式授予 guest CONNECT 权限:
复制代码 | |
GRANT CONNECT TO guest; GO |
要求具有数据库的所有权。
示例
A. 添加数据库用户
以下示例使用现有的 SQL Server 登录名 Vidur,将数据库用户 Vidur 添加到当前数据库中的现有 Recruiting 角色。
复制代码 | |
EXEC sp_adduser 'Vidur', 'Vidur', 'Recruiting' |
以下示例将用户 Arvind 添加到 SQL Server 登录名 Arvind 的当前数据库。该用户属于默认的 public 角色。
复制代码 | |
EXEC sp_adduser 'Arvind' |
以下示例将 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'
相关文章推荐
- 使用sql脚本为数据库添加登录用户
- 第1天-sql基本概念及安装与添加用户
- SA权限添加管理员帐号的SQL命令与命令行下添加SQL用户的方法
- MS SQL Server命令行添加用户
- C#用户设置界面(二): SQL添加、更改与删除操作
- sql 添加用户
- sql 添加登录用户
- 添加SQL用户授权的过程。
- centos下mysql添加用户,操作数据库,导入sql文件
- SQL 2000 将用户添加到角色中
- 通过sqlserver sa帐号在windows中添加用户并授权。
- Sql添加Oracle数据库的表空间和用户
- sql语句开远程终端+建用户+2003添加远程桌面组用户
- SQL Serversa用户的启用及用户添加
- T-SQL语句循环批量添加登录用户和数据库用户并自动创建架构,为每个用户添加Create table权限
- Sql添加用户
- 关于SQL的若干问题:备份,更改SA用户密码,添加用户,连接失败,服务不能开启等
- MySql 5.7中添加用户,新建数据库,用户授权,删除用户,修改密码,导入导出sql文件,设置字符集
- sql语句开远程终端+建用户+2003添加远程桌面组用户
- PHP基础----PHP 与 MySQL----28用户数据添加与防 SQL 注入攻击