Skip to content

Commit

Permalink
add mssql/create-user docs
Browse files Browse the repository at this point in the history
  • Loading branch information
A-Najmabadi committed Oct 6, 2024
1 parent 4a8f5e6 commit 03a2f10
Show file tree
Hide file tree
Showing 4 changed files with 187 additions and 4 deletions.
5 changes: 5 additions & 0 deletions src/components/Sidebar/data.js
Original file line number Diff line number Diff line change
Expand Up @@ -3348,6 +3348,11 @@ export default {
icon: <GoVersions />,
link: "/dbaas/mssql/choose-version"
},
{
title: "ایجاد و مدیریت کاربر جدید",
icon: <GoKey />,
link: "/dbaas/mssql/create-user"
},
{
hr: true
},
Expand Down
178 changes: 178 additions & 0 deletions src/pages/dbaas/mssql/create-user.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
import Layout from "@/components/Layout";
import Button from "@/components/Common/button";
import Section from "@/components/Common/section";
import Alert from "@/components/Common/alert";
import Tabs from "@/components/Common/tab";
import Step from "@/components/Common/step";
import Card from "@/components/Common/card";
import Important from "@/components/Common/important";
import Highlight from "@/components/Common/highlight";
import Link from "next/link";
import NextPage from "@/components/Common/nextpage";
import Asciinema from "@/components/Common/asciinema";

import Head from "next/head";

<Layout>
<Head>
<title>مستندات ایجاد و مدیریت کاربر جدید در دیتابیس MSSQL - لیارا</title>
</Head>
# ایجاد و مدیریت کاربر جدید در دیتابیس MSSQL
<hr className="mb-2" />

وقتی که شما یک دیتابیس MSSQL جدید در لیارا، ایجاد می‌کنید؛ به صورت خودکار یک کاربر به نام sa همراه با آن ایجاد می‌شود که همان دسترسی پیش‌فرض است.
دسترسی پیش‌فرض یا کاربر <Important>sa</Important> در MSSQL، یک اکانت مدیریتی با بیشترین سطح دسترسی است. این کاربر معادل administrator در سیستم‌های عامل مختلف است و می‌تواند تمام عملیات‌های مدیریتی و اجرایی در پایگاه داده را انجام دهد.
<div className="h-2" />

شما می‌توانید با استفاده از ابزارهای مختلفی نظیر SQLCMD کاربران جدید با دسترسی‌های جدید
در دیتابیس خود ایجاد کنید؛ در ادامه به نحوه ساخت کاربران جدید با دسترسی‌های مختلف در دیتابیس، پرداخته شده است.
<div className="h-2" />

برای ساخت کاربر جدید در دیتابیس، در ابتدا باید <a href="/dbaas/mssql/how-tos/connect-via-cli/sqlcmd" className="text-[#2196f3]">ابزار SQLCMD</a> را بر روی سیستم (یا سرور خود)، نصب کنید؛ در ادامه، بایستی با استفاده از اطلاعات موجود در بخش **نحوه اتصال** دیتابیس‌تان در لیارا و با استفاده از دستور زیر، در ترمینال، به دیتابیس، با کاربر sa، متصل شوید:

<div className="h-4" />
<div dir='ltr'>
<Highlight className="bash">
{`sqlcmd -S <host_name>,<port> -U<user_name> -P<password>`}
</Highlight>
</div>
<div className="h-4" />

پس از اتصال موفق، می‌توانید با استفاده از دستورات تعریف شده در ادامه، کاربران مد نظر خود را، ایجاد کنید.

<Section id="create-readonly-user" title="ساخت کاربر با دسترسی Read-Only " />
برای ایجاد کاربر جدید که تنها اجازه خواندن اطلاعات (READ) از دیتابیس را دارد و می‌تواند از آن بکاپ بگیرد،
می‌توانید از قطعه کد زیر استفاده کنید:

<div className="h-4" />
<div dir='ltr'>
<Highlight className="SQL">
{`-- connect to DB
USE master;
GO
-- Create login for new user
CREATE LOGIN ReadOnlyUser
WITH PASSWORD = 'StrongPassword123';
GO
-- Select specific database
USE <database_name>; -- eg: USE master;
GO
-- Create user based on created login
CREATE USER ReadOnlyUser
FOR LOGIN ReadOnlyUser;
GO
-- Change user-role to read-only
ALTER ROLE db_datareader ADD MEMBER ReadOnlyUser;
GO
-- give access to take backups
GRANT BACKUP DATABASE TO BackupUser;
GRANT BACKUP LOG TO BackupUser;
GO
`}
</Highlight>
</div>
<div className="h-4" />

دستورات فوق، یک کاربر با نام <Important>ReadOnlyUser</Important> و رمزعبور <Important>StrongPassword123</Important> برای دیتابیس master (یا دیتابیس انتخابی) با دسترسی readonly، ایجاد می‌کند.


<Section id="create-limited-user" title="ساخت کاربر با دسترسی محدود به برخی جداول" />
در صورتی که بخواهید کاربری ایجاد کنید که فقط به چند جدول مشخص دسترسی داشته باشد، می‌توانید مانند دستورات زیر عمل کنید:


<div className="h-4" />
<div dir='ltr'>
<Highlight className="sql">
{`-- connect to DB
USE master;
GO
-- Create a user for login
CREATE LOGIN LimitedUser
WITH PASSWORD = 'AnotherStrongPassword123';
GO
-- Use specific Database
USE <database_name>; -- eg: USE master;
GO
-- Create user for created login user
CREATE USER LimitedUser
FOR LOGIN LimitedUser;
GO
-- give access to created user
GRANT SELECT ON dbo.<table_name_1> TO LimitedUser;
GRANT SELECT ON dbo.<table_name_2> TO LimitedUser;
GO`}
</Highlight>
</div>
<div className="h-4" />

دستورات فوق، یک کاربر به نام <Important>LimitedUser</Important> و رمزعبور <Important>AnotherStrongPassword123</Important> ایجاد می‌کند که می‌تواند
در جداول \<table_name_1\> و \<table_name_2\> در یک دیتابیس مشخص، عملیات <Important>SELECT</Important> را، انجام دهد.

<Section id="delete-user" title="حذف یک کاربر" />
برای حذف یک کاربر در MSSQL، ابتدا باید هرگونه وابستگی (مثل عضویت در نقش‌ها) و دسترسی‌های کاربر را حذف کنید. سپس می‌توانید <Important>USER</Important> و <Important>LOGIN</Important> مربوطه را حذف کنید.

اگر کاربر در نقش‌های خاصی عضو است یا مجوزهایی برای جداول و اشیاء مختلف دارد، بهتر است ابتدا آنها را حذف کنید. برای حذف نقش‌ها و دسترسی‌ها، می‌توانید مانند قطعه کد زیر، عمل کنید:


<div className="h-4" />
<div dir='ltr'>
<Highlight className="sql">
{`-- use the database
USE <database_name>; -- eg: USE master;;
GO
-- drop all roles
ALTER ROLE <role_name> DROP MEMBER <user_name>; -- eg: ALTER ROLE db_datareader DROP MEMBER readOnlyUser;
GO
-- revoke all specific access
REVOKE SELECT, INSERT, UPDATE, DELETE ON dbo.<table_name> FROM <user_name>;
GO`}
</Highlight>
</div>
<div className="h-4" />

بعد از حذف دسترسی‌ها، می‌توانید کاربر را با استفاده از قطعه کد زیر، از دیتابیس حذف کنید:
<div className="h-4" />
<div dir='ltr'>
<Highlight className="sql">
{`-- use specific db
USE <database_name>; -- eg: USE master;
GO
DROP USER <user_name>;
GO`}
</Highlight>
</div>
<div className="h-4" />

در نهایت و پس از حذف کاربر، می‌توانید LOGIN کاربر را نیز با استفاده از قطعه کد زیر، حذف کنید:
<div className="h-4" />
<div dir='ltr'>
<Highlight className="sql">
{`-- use DATABASE
UUSE master;
GO
DROP LOGIN <user_name>;
GO`}
</Highlight>
</div>
<div className="h-4" />

<Alert variant="success">
<p>
همچنین بخوانید: <a href="https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver16" className="text-[#2196f3]">مستندات رسمی ایجاد کاربر در SQL SERVER</a>
</p>
</Alert>

</Layout>
4 changes: 2 additions & 2 deletions src/pages/dbaas/mysql/create-user.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ FLUSH PRIVILEGES;
</Highlight>
</div>

<Section id="see-user-rules" title="مشاهده دسترسی‌های یک کاربر" />
<Section id="see-user-roles" title="مشاهده دسترسی‌های یک کاربر" />
برای مشاهده دسترسی‌های یک کاربر می‌توانید از دستور <Important>SHOW GRANTS</Important> استفاده کنید. به عنوان مثال،
می‌توانید برای مشاهده دسترسی‌های کاربری به نام <Important>readonly_user</Important>، مانند قطعه کد زیر، عمل کنید:

Expand All @@ -113,7 +113,7 @@ FLUSH PRIVILEGES;
</Highlight>
</div>

<Section id="delete-user-rules" title="حذف دسترسی‌ یک کاربر" />
<Section id="delete-user-roles" title="حذف دسترسی‌ یک کاربر" />
برای حذف یک دسترسی کاربر، می‌توانید از دستور <Important>REVOKE</Important> استفاده کنید؛
به عنوان مثال، فرض کنید که قصد دارید دسترسی <Important>UPDATE</Important> در جدول table1 از دیتابیس mydb را از کاربری به نام <Important>limited_user</Important>، سلب کنید.
برای این‌کار، می‌توانید از نمونه قطعه کد زیر، استفاده کنید:
Expand Down
4 changes: 2 additions & 2 deletions src/pages/dbaas/postgresql/create-user.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ GRANT SELECT, INSERT, UPDATE ON TABLE public.<table_name_1>, public.<table_name_
در جداول \<table_name_1\> و \<table_name_2\> در یک دیتابیس مشخص، عملیات <Important>SELECT</Important> , <Important>INSERT</Important> و <Important>UPDATE</Important> را، انجام دهد.


<Section id="see-user-rules" title="مشاهده همه کاربران به همراه دسترسی‌های آن‌ها" />
<Section id="see-user-roles" title="مشاهده همه کاربران به همراه دسترسی‌های آن‌ها" />
برای مشاهده دسترسی‌های همه کاربران در PostgreSQL می‌توانید
از قطعه کد زیر استفاده کنید:

Expand All @@ -110,7 +110,7 @@ GRANT SELECT, INSERT, UPDATE ON TABLE public.<table_name_1>, public.<table_name_
</Highlight>
</div>

<Section id="delete-user-rules" title="حذف دسترسی‌ یک کاربر" />
<Section id="delete-user-roles" title="حذف دسترسی‌ یک کاربر" />
برای حذف دسترسی‌های یک کاربر در PostgreSQL، می‌توانید از دستور <Important>REVOKE</Important> استفاده کنید؛
به عنوان مثال فرض کنید کاربر <Important>readonly_user</Important> دسترسی SELECT به جداولی در اسکیمای public دارد و شما می‌خواهید این دسترسی را از او سلب کنید.
برای این کار، می‌توانید مانند قطعه کد زیر، عمل کنید:
Expand Down

0 comments on commit 03a2f10

Please sign in to comment.