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