خانه/ وبلاگ/ ساخت User و Login
امنیت SQL Server

نحوه ساخت User و Login در SQL Server و تفاوت آن‌ها

مفاهیم پایه ۲۷ مرداد ۱۴۰۴ ۹ دقیقه مطالعه

یکی از گیج‌کننده‌ترین بخش‌های امنیت SQL Server برای تازه‌کارها، تفاوت بین Login و User است — چون هر دو معمولاً یک نام یکسان دارند و به‌نظر یک چیز می‌رسند. اما این دو مفهوم کاملاً متفاوت هستند و هرکدام در یک سطح جدا از SQL Server تعریف می‌شوند.

Login چیست؟ (سطح سرور)

یک Login شناسه‌ای در سطح کل نمونه (Instance) سرور است. Login فقط جواب می‌دهد: «آیا اجازه داری اصلاً به این سرور وصل شوی؟» — همین و بس. هیچ اطلاعی از اینکه داخل کدام پایگاه‌داده چه‌کاری می‌توانی بکنی ندارد.

User چیست؟ (سطح پایگاه‌داده)

یک User شناسه‌ای در سطح یک پایگاه‌داده‌ی خاص است. هر پایگاه‌داده User های خودش را دارد، و این User مشخص می‌کند داخل همان پایگاه‌داده چه دسترسی‌هایی (خواندن، نوشتن، اجرای Stored Procedure و ...) داری.

یک مثال ساده: Login مثل کارتِ ورود به ساختمان یک شرکت است — فقط اجازه‌ی ورود به لابی را می‌دهد. User مثل کارت دسترسی به یک اتاق خاص (مثلاً اتاق حسابداری) داخل همان ساختمان است. بدون کارت اتاق (User)، حتی اگر وارد ساختمان (سرور) شده باشی، نمی‌توانی وارد اتاق (پایگاه‌داده) شوی.

مقایسه‌ی سریع

ویژگیLoginUser
سطح تعریفکل سرور (Instance)یک پایگاه‌داده‌ی خاص
مسئولیتاحراز هویت (اجازه‌ی اتصال)مجوزدهی (اجازه‌ی انجام کار)
محل ذخیرهپایگاه‌داده‌ی سیستمی masterهمان پایگاه‌داده
دستور ساخت T-SQLCREATE LOGINCREATE USER

ساخت Login و User در SSMS (تصویری)

مرحله ۱: در Object Explorer، مسیر Security → Logins را باز کن، راست‌کلیک کن و New Login... را بزن:

Login - New — General
Login name:
sara_dev
SQL Server authentication
Password:
••••••••••

مرحله ۲: در همان پنجره، به تب User Mapping برو، پایگاه‌داده‌ی موردنظر را تیک بزن — این کار به‌طور خودکار یک User هم‌نام در آن پایگاه‌داده می‌سازد:

Login - New — User Mapping
ShopDB User: sara_dev

ساخت Login و User با T-SQL

sql
-- ۱. ساخت Login در سطح سرور
CREATE LOGIN sara_dev WITH PASSWORD = N'Str0ngP@ssw0rd!';

-- ۲. رفتن به پایگاه‌داده‌ی موردنظر و ساخت User متناظر
USE ShopDB;
CREATE USER sara_dev FOR LOGIN sara_dev;

-- ۳. دادن دسترسی به این User (مثلاً فقط خواندن)
ALTER ROLE db_datareader ADD MEMBER sara_dev;
اگر فقط Login بسازی و مرحله‌ی CREATE USER را انجام ندهی، آن Login می‌تواند به سرور وصل شود اما با خطای دسترسی به هر پایگاه‌داده‌ای روبه‌رو می‌شود — این دقیقاً یکی از علت‌های رایج خطای Login Failed for User است.

جمع‌بندی

  • Login در سطح سرور است و فقط اجازه‌ی اتصال می‌دهد.
  • User در سطح یک پایگاه‌داده‌ی خاص است و مجوزهای واقعی را کنترل می‌کند.
  • یک Login باید به یک User در هر پایگاه‌داده‌ای که قرار است بهش دسترسی داشته باشد، نگاشت شود.

برای ادامه، ببین چطور می‌توانی فقط به یک پایگاه‌داده‌ی خاص دسترسی بدهی، یا درس‌های Logins و Users را در دوره‌ی SQLFarsi کامل ببین.

می‌خوای مفاهیم امنیت SQL Server را کامل یاد بگیری؟

فصل امنیت دوره‌ی SQLFarsi، Login، User، Role و Permission را از پایه توضیح می‌دهد.

شروع فصل امنیت