فراموش کردن رمز عبور SA در SQL Server؛ چگونه آن را تغییر دهیم؟
SA (مخفف System Administrator) قدرتمندترین Login داخلی SQL Server است و بهطور پیشفرض عضو نقش سرور sysadmin است. اگر رمز آن را فراموش کردهای و هیچ Login دیگری با دسترسی مدیریتی نداری، بهنظر میرسد قفل شدهای — اما خوشبختانه اگر به سیستمعامل سروری که SQL Server روی آن نصب است دسترسی Administrator داشته باشی، میتوانی با Single-User Mode دوباره کنترل را به دست بگیری.
راه سادهتر: استفاده از یک Login دیگر با دسترسی sysadmin
اگر Login دیگری (چه یک حساب ویندوزی و چه یک SQL Login) داری که عضو نقش sysadmin است، نیازی به روش پیچیدهی زیر نیست — فقط با آن وصل شو و رمز SA را مستقیم عوض کن:
ALTER LOGIN sa WITH PASSWORD = N'N3wStr0ngP@ss!'; ALTER LOGIN sa ENABLE;
اگر چنین Login ای نداری، ادامهی این راهنما را دنبال کن.
مرحله ۱ — توقف سرویس SQL Server
از SQL Server Configuration Manager یا services.msc، سرویس SQL Server (MSSQLSERVER) را متوقف کن.
مرحله ۲ — استارت سرویس در Single-User Mode
سرویس را از طریق Command Prompt با دسترسی Administrator و با پارامتر -m استارت کن. این حالت باعث میشود SQL Server فقط یک اتصال را بپذیرد و آن اتصال بهصورت خودکار دسترسی sysadmin کامل داشته باشد — حتی بدون رمز عبور صحیح:
NET STOP MSSQLSERVER NET START MSSQLSERVER /m"SQLCMD"
مقدار SQLCMD بعد از /m نام برنامهای است که اجازهی اتصال دارد؛ این کار باعث میشود فقط از طریق ابزار خطفرمان SQLCMD بتوانی وصل شوی و SSMS در این حالت متصل نشود.
مرحله ۳ — اتصال با SQLCMD و بازنشانی رمز
در همان Command Prompt، دستور sqlcmd را اجرا کن و رمز SA را تغییر بده:
sqlcmd -S localhost -E
بعد از اجرای دستور بالا وارد محیط SQLCMD میشوی؛ حالا این دستورها را بزن (بعد از هر خط، GO را جدا اجرا کن):
ALTER LOGIN sa WITH PASSWORD = N'N3wStr0ngP@ss!'; GO ALTER LOGIN sa ENABLE; GO
مرحله ۴ — بازگرداندن سرویس به حالت عادی
سرویس را دوباره متوقف و بدون پارامتر -m استارت کن تا به حالت چند-کاربرهی معمولی برگردد:
NET STOP MSSQLSERVER NET START MSSQLSERVER
حالا میتوانی در SSMS با نام کاربری sa و رمز جدید وصل شوی.
sysadmin باشد تا در صورت مشکل با SA، راه جایگزین داشته باشی. رمز SA را هم به یک مدیریتکنندهی رمز سازمانی (Password Manager) بسپار.جمعبندی
- اگر Login دیگری با دسترسی sysadmin داری، مستقیم با
ALTER LOGINرمز SA را عوض کن. - در غیر اینصورت، با Single-User Mode (پارامتر
-m) و SQLCMD میتوانی بدون رمز قبلی، رمز جدید تنظیم کنی. - این روش نیاز به دسترسی Administrator ویندوز روی سرور دارد.
برای آشنایی بیشتر با مفهوم Login و نقشهای سرور، درسهای Logins و Roles را ببین.
سوالات متداول دربارهی این موضوع
اگر رمز sa را فراموش کردهام چطور وارد سرور شوم؟
اگر عضو Administrators ویندوز سرور هستی، سرویس را در Single-User Mode (پارامتر -m) اجرا کن؛ در این حالت اعضای Administrators میتوانند وارد شوند و رمز را تغییر دهند.
تغییر رمز sa روی برنامهها اثر میگذارد؟
فقط روی برنامههایی که با sa وصل میشوند. توصیه میشود برنامهها اصلاً از sa استفاده نکنند و Login جداگانه با حداقل دسترسی داشته باشند.
آیا بهتر است حساب sa غیرفعال شود؟
اگر استفاده نمیشود، بله؛ بعد از اینکه یک Login مدیر دیگر ساختی sa را Disable کن تا هدف حملات حدس رمز نباشد.
میخوای مفاهیم امنیت SQL Server را کامل یاد بگیری؟
فصل امنیت دورهی SQLFarsi، Login، User، Role و Permission را از پایه توضیح میدهد.
شروع فصل امنیت