نحوه ساخت User و Login در SQL Server و تفاوت آنها
یکی از گیجکنندهترین بخشهای امنیت SQL Server برای تازهکارها، تفاوت بین Login و User است — چون هر دو معمولاً یک نام یکسان دارند و بهنظر یک چیز میرسند. اما این دو مفهوم کاملاً متفاوت هستند و هرکدام در یک سطح جدا از SQL Server تعریف میشوند.
Login چیست؟ (سطح سرور)
یک Login شناسهای در سطح کل نمونه (Instance) سرور است. Login فقط جواب میدهد: «آیا اجازه داری اصلاً به این سرور وصل شوی؟» — همین و بس. هیچ اطلاعی از اینکه داخل کدام پایگاهداده چهکاری میتوانی بکنی ندارد.
User چیست؟ (سطح پایگاهداده)
یک User شناسهای در سطح یک پایگاهدادهی خاص است. هر پایگاهداده User های خودش را دارد، و این User مشخص میکند داخل همان پایگاهداده چه دسترسیهایی (خواندن، نوشتن، اجرای Stored Procedure و ...) داری.
مقایسهی سریع
| ویژگی | Login | User |
|---|---|---|
| سطح تعریف | کل سرور (Instance) | یک پایگاهدادهی خاص |
| مسئولیت | احراز هویت (اجازهی اتصال) | مجوزدهی (اجازهی انجام کار) |
| محل ذخیره | پایگاهدادهی سیستمی master | همان پایگاهداده |
| دستور ساخت T-SQL | CREATE LOGIN | CREATE USER |
ساخت Login و User در SSMS (تصویری)
مرحله ۱: در Object Explorer، مسیر Security → Logins را باز کن، راستکلیک کن و New Login... را بزن:
مرحله ۲: در همان پنجره، به تب User Mapping برو، پایگاهدادهی موردنظر را تیک بزن — این کار بهطور خودکار یک User همنام در آن پایگاهداده میسازد:
ساخت Login و User با T-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;
CREATE USER را انجام ندهی، آن Login میتواند به سرور وصل شود اما با خطای دسترسی به هر پایگاهدادهای روبهرو میشود — این دقیقاً یکی از علتهای رایج خطای Login Failed for User است.جمعبندی
- Login در سطح سرور است و فقط اجازهی اتصال میدهد.
- User در سطح یک پایگاهدادهی خاص است و مجوزهای واقعی را کنترل میکند.
- یک Login باید به یک User در هر پایگاهدادهای که قرار است بهش دسترسی داشته باشد، نگاشت شود.
برای ادامه، ببین چطور میتوانی فقط به یک پایگاهدادهی خاص دسترسی بدهی، یا درسهای Logins و Users را در دورهی SQLFarsi کامل ببین.
سوالات متداول دربارهی این موضوع
تفاوت Login و User در SQL Server چیست؟
Login در سطح سرور است و اجازهی ورود به Instance را میدهد؛ User در سطح یک پایگاهداده است و تعیین میکند آن Login داخل آن پایگاهداده چه کاری میتواند بکند.
Orphaned User چیست؟
Userی در پایگاهداده که Login متناظرش (با همان SID) در سرور وجود ندارد؛ معمولاً بعد از Restore روی سرور دیگر رخ میدهد و با ALTER USER ... WITH LOGIN = ... اصلاح میشود.
آیا یک Login میتواند بدون User باشد؟
بله؛ چنین Loginی به سرور وصل میشود ولی به پایگاهدادههای بدون User نگاشتشده دسترسی ندارد.
میخوای مفاهیم امنیت SQL Server را کامل یاد بگیری؟
فصل امنیت دورهی SQLFarsi، Login، User، Role و Permission را از پایه توضیح میدهد.
شروع فصل امنیت