CREATE LOGIN 用户名 WITH PASSWORD
,再通过 CREATE USER 用户名 FOR LOGIN
绑定到数据库,最后授予权限在SQL中创建数据库用户名(即数据库用户)通常需要结合登录名(用于身份验证)和数据库用户(用于特定数据库的访问),以下是详细步骤和注意事项:
创建登录名(以SQL Server为例)
-
SQL Server身份验证登录名:
- 语法:
CREATE LOGIN username WITH PASSWORD = 'password';
- 示例:
CREATE LOGIN db_admin WITH PASSWORD = 'SecureP@ssw0rd';
- 说明:此步骤创建的是服务器级别的登录名,用于后续映射到数据库用户。
- 语法:
-
Windows身份验证登录名:
- 语法(无需密码):
CREATE LOGIN [DOMAINUser] FROM WINDOWS;
- 示例:
CREATE LOGIN [CONSOLESjohndoe] FROM WINDOWS;
- 适用场景:适用于集成Windows AD环境的用户。
- 语法(无需密码):
创建数据库用户
-
前提条件:
需先存在对应的登录名(SQL Server身份验证或Windows登录名)。
-
语法:
USE [DatabaseName]; CREATE USER username FOR LOGIN loginname;
- 示例:
USE TestDB; CREATE USER db_admin_user FOR LOGIN db_admin;
- 作用:将服务器登录名映射到指定数据库的用户。
- 示例:
-
同名处理:
数据库用户名不必与登录名相同,但可简化管理。
分配权限
-
赋予角色:
- 将用户添加到预定义角色(如db_datareader、db_datawriter):
ALTER ROLE db_datareader ADD MEMBER username;
- 示例:
ALTER ROLE db_owner ADD MEMBER db_admin_user;
- 将用户添加到预定义角色(如db_datareader、db_datawriter):
-
直接授予权限:
- 语法:
GRANT SELECT, INSERT ON [dbo].[TableName] TO username;
- 示例:
GRANT SELECT ON [dbo].[Employees] TO db_admin_user;
- 语法:
删除用户与登录名
-
删除数据库用户:
- 语法(SQL Server):
DROP USER username;
- 示例(结合登录名):
DROP USER db_admin_user;
- 语法(SQL Server):
-
删除登录名:
- 语法(SQL Server):
DROP LOGIN loginname;
- 示例:
DROP LOGIN db_admin;
- 语法(SQL Server):
不同数据库系统的对比
操作 | SQL Server | MySQL |
---|---|---|
创建登录名 | CREATE LOGIN |
CREATE USER (直接绑定到数据库) |
创建数据库用户 | CREATE USER FOR LOGIN |
与登录名一体,无需单独创建 |
权限分配 | ALTER ROLE /GRANT |
GRANT |
常见问题(FAQs)
-
如何删除数据库用户?
- 在SQL Server中,使用
DROP USER username;
删除数据库用户,若需同时删除登录名,需额外执行DROP LOGIN loginname;
。 - 在MySQL中,直接使用
DROP USER 'username'@'host';
。
- 在SQL Server中,使用
-
登录名和数据库用户的区别是什么?
- 登录名:服务器级别的身份认证凭证(如SQL Server登录名或Windows账户)。
- 数据库用户:数据库内的访问主体,需通过登录名映射生成。
- 类比:登录名类似“门禁卡”,数据库用户类似“房间
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/75412.html