کنترل سطح دسترسی های دیتابیس

نویسنده: توحید عزیززاده| دسته بندی: آموزش | نظرات: 0 نفر
کنترل سطح دسترسی های دیتابیس
245
17 خرداد 1399
توحید عزیززاده واحد دیجیتال مارکتینگ

فهرست عناوین مقاله: 

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

  • وظیفه سیستم مجوز دیتابیس MySQL
  • تعیین سطح دسترسی های دیتابیس برای کاربر
  • ترتیب کنترل سطح دسترسی های دیتابیس
  • انواع سطح دسترسی های دیتابیس
  • امتیاز پویا در MySQL

وظیفه سیستم مجوز دیتابیس MySQL

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

تعیین سطح دسترسی های دیتابیس برای کاربر

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

ترتیب کنترل سطح دسترسی های دیتابیس

سطح دسترسی های دیتابیس به ترتیب زیر سازماندهی می‌شود:

  • سطح دسترسی مدیریتی: این نوع از سطح دسترسی های دیتابیس مجوز انجام تمام امور مربوط به تمام دیتابیس‌ها را دارد. همچنین این نوع از دسترسی به عنوان دسترسی گلوبال یا سراسری نیز شناخته می‌شود.
  • سطح دسترسی دیتابیس: این نوع از سطح دسترسی دیتابیس‌ها به کاربر اجازه می‌دهد که به یک دیتابیس خاص و تمام آبجکت های آن دیتابیس دسترسی داشته باشد.
  • سطح دسترسی آبجکت ها: این نوع از سطح دسترسی دیتابیس‌ها به کاربر خود اجازه می‌دهد که آبجکت ها و موارد خاصی را در دیتابیس تحت کنترل و مدیریت داشته باشد. این سطح دسترسی ممکن است برای آبجکت های یک دیتابیس، برای کل دیتابیس یا برای کل دیتابیس های موجود به کاربر اعطا شود.

کاربری که سطح دسترسی مدیریتی دارد، طبق مشخصه های زیر امکان انجام فعالیت روی دیتابیس را داراست:

  • File: طبق این مشخصه کاربری که سطح دسترسی مدیریت به دیتابیس را دارد، مجاز است که عملیات خوانش، نوشتن و حذف فایل‌های درون سرور را انجام دهد.
  • PROCESS: طبق این مشخصه کاربری که سطح دسترسی مدیریت به دیتابیس را دارد، مجاز است که تمام پروسس های در حال اجرای دیتابیس را مشاهده کند.
  • SUPER: طبق این مشخصه کاربری که سطح دسترسی مدیریت به دیتابیس را دارد، مجاز است اتصال کلاینت‌ها را قطع کند و پیکربندی سرور را تغییر دهد.
  • ALL: طبق این مشخصه کاربری که سطح دسترسی مدیریت به دیتابیس را دارد، تمام امتیازهای فوق الذکر به جز امکان اعطای سطح دسترسی به دیگر کاربران را خواهد داشت.

انواع سطح دسترسی های دیتابیس

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

دسترسی دیتابیس ALL

این سطح از دسترسی بدون هیچ‌گونه محدودیتی شامل تمامی دسترسی های موجود است.

سطح دسترسی ALTER

برای تغییر ساختار جداول سطح دسترسی ALTER را فعال کنید. تغییر جدول نیز به دسترسی CREATE و INSERT نیاز دارد. تغییر نام جدول به ALTER و DROP در جدول قدیمی و به CREATE و INSERT  در جدول جدید لازم است.

سطح دسترسی ALTER ROUTINE

سطح دسترسی ALTER ROUTINE استفاده از عباراتی که باعث تغییر یا رها کردن روال‌های ذخیره می‌شوند (رویه‌ها و عملکردهای ذخیره شده) را امکان پذیر می‌کند.

سطح دسترسی CREATE

استفاده از سطح دسترسی CREATE ایجاد دیتابیس جدید و همچنین جداول جدید را میسر می‌کند.

سطح دسترسی CREATE ROUTINE

سطح دسترسی CREATE ROUTINE به کاربر اجازه ایجاد روال‌های ذخیره (رویه‌ها و عملکردهای ذخیره شده) را می‌دهد.

سطح دسترسی CREATE TABLESPACE

سطح دسترسی CREATE TABLESPACE به کاربر اجازه تغییر یا حذف گروه‌های فایل لاگ را می‌دهد.

سطح دسترسی CREATE TEMPORARY TABLES

سطح دسترسی CREATE TEMPORARY TABLES امکان ایجاد جداول موقت را به کاربر اعطا می‌کند. بعد از ایجاد یک جدول موقت سرور هیچ‌گونه سطح دسترسی دیگری را در جدول بررسی نمی‌کند؛ بنابراین کاربر این امکان را دارد که پس از ایجاد جدول هر عملیاتی را روی جدول مانند DROP TABLE، INSERT، UPDATE یا SELECT انجام دهد.

سطح دسترسی CREATE USER

سطح دسترسی CREATE USER امکان استفاده از ALTER USER ، CREATE ROLE ، CREATE USER ، DROP ROLE ، DROP USE ، RENAME USER و عبارت‌های REVOKE ALL PRIVILEGES را فعال می‌کند.

سطح دسترسی CREATE VIEW

سطح دسترسی CREATE VIEW امکان استفاده از فرایند مشاهده را به کاربر اعطا می‌کند.

سطح دسترسی DELETE

با استفاده از این سطح دسترسی کاربر امکان حذف سطرهای داخل جدول یک دیتابیس را دارد.

سطح دسترسی DROP

سطح دسترسی DROP امکان حذف پایگاه داده‌های موجود، جداول و نماهای موجود را به کاربر اعطا می‌کند. برای استفاده از امتیاز DROP کاربر باید اجازه استفاده از ALTER TABLE... DROP PARTITION را در یک جدول داشته باشد. همچنین امتیاز DROP برای TRUNCATE TABLE نیز لازم است.

سطح دسترسی DROP ROLE

امتیازات CREATE ROLE و DROP ROLE به اندازه CREATE USER قدرتمند نیستند؛ زیرا کاربر با استفاده از این عبارات فقط امکان ایجاد یا حذف حساب کاربری را دارد، اما CREATE USER ممکن است ویژگی‌های حساب را عوض کند یا حساب کاربری را تغییر نام دهد.

سطح دسترسی EVENT

کاربر از طریق EVENT مجاز به مشاهده رویدادهای CREATE, ALTER, DROP و رویدادهای زمانبندی شده است.

سطح دسترسی EXECUTE

استفاده از عبارات EXECUTE اجرای روال‌های ذخیره (مراحل و عملکردهای ذخیره شده) را امکان پذیر می‌کند.

سطح دسترسی FILE

عملکردها و رفتارهای ذیل که مربوط به سرور هستند را تحت تأثیر قرار می‌دهد:

  • خوانش و نگارش فایل‌ها روی میزبان سرور با استفاده از LOAD DATA و SELECT و INTO OUTFILE و عملکرد LOAD_FILE را فعال می‌کند.
  • کاربری که از امتیاز FILE برخوردار است، امکان خوانش پرونده‌های سراسری یا آن‌هایی که توسط سرور MySQL قابل خوانش هستند را در سرور دارد. (این بدان معنی است که کاربر امکان خوانش هر پرونده‌ای را در هر فهرست دایرکتوری دارد، زیرا سرور مجاز است به هر یک از این پرونده‌ها دسترسی پیدا کند.)
  • ایجاد پرونده‌های جدید در هر شاخه‌ای که سرور MySQL دسترسی به نوشتن داشته باشد را ممکن می‌سازد. این مورد شامل DATA DIRECTORY یا INDEX DIRECTORY سرور است که حاوی پرونده‌هایی است که CREATE TABLE را پیاده سازی می‌کنند.

سطح دسترسی GRANT OPTION

سطح دسترسی GRANT OPTION این امکان را برای شما فراهم می‌کند که امتیازات خود را از سایر کاربران بگیرید یا به آنها اعطا کنید.

سطح دسترسی INDEX

سطح دسترسی INDEX استفاده از عباراتی را ایجاد می‌کند که باعث ایجاد یا رها کردن (حذف) فهرست‌ها می‌شود. INDEX در جداول موجود اعمال می‌شود. اگر امتیاز ایجاد CREATE برای یک جدول را دارید، بهتر است تعاریف فهرست را در امتیاز CREATE TABLE درج کنید.

سطح دسترسی INSERT

سطح دسترسی INSERT ردیف‌ها را ممکن می‌سازد که در یک پایگاه داده در جداول قرار بگیرند. INSERT همچنین به امتیازهای ANALYZE TABLE, OPTIMIZE TABLE و REPAIR TABLE نیاز دارد.

سطح دسترسی LOCK TABLES

سطح دسترسی LOCK TABLES به کاربر این اجازه را می‌دهد که جداول دیتابیسی که امتیاز SELECT آن را دارا باشند، قفل کند.

سطح دسترسی PROCESS

سطح دسترسی PROCESS نمایش اطلاعات مربوط به موضوعات در حال اجرا در سرور را ممکن می‌سازد. این امتیاز استفاده از SHOW PROCESSLIST یا لیست پردازنده MYSQLAdmin را برای دیدن موضوعات متعلق به حساب‌های دیگر امکان پذیر می‌کند. امتیاز PROCESS همچنین استفاده از SHOW ENGINE را ممکن می‌کند.

PROXY

به یک کاربر امکان جعل هویت یا شناخته شدن به عنوان یک کاربر دیگر را می‌دهد.

سطح دسترسی RELOAD

استفاده از عبارت FLUSH را فعال می‌کند. همچنین RELOAD دستورات MYSQLAdmin را که معادل عملیات FLUSH هستند، فعال می‌کند.

سطح دسترسی SELECT

با استفاده از سطح دسترسی SELECT مجاز است سطرهای جداول یک پایگاه داده را انتخاب کند. تنها در صورتی که کاربر به جداول دسترسی داشته باشد، مجاز به استفاده از Select برای انتخاب جداول است.

سطح دسترسی SHOW DATABASES

با استفاده از سطح دسترسی SELECT کاربر قادر این امکان را دارد که نام پایگاه داده را مشاهده کند. تنها در صورتی که کاربر به جداول دسترسی داشته باشد، مجاز به استفاده از Select برای انتخاب جداول است. کاربرانی که از این امتیاز برخوردار نیستند، فقط پایگاه داده‌هایی را مشاهده می‌کنند که برخی از امتیازات آن پایگاه داده را در اختیار دارند.

سطح دسترسی SHUTDOWN

استفاده از عبارات SHUTDOWN و RESTART یعنی دستور توقف mysqladmin و عملکرد mysql_shutdown API را امکان پذیر می‌کند.

سطح دسترسی SUPER

همانطور که قبلا ذکر شد، طبق این سطح از دسترسی ممکن است اتصال کلاینت‌ها را قطع کند و پیکربندی سرور را تغییر دهد.

SUPER یک سطح قدرتمند و دور از دسترس است و نباید به آسانی به کاربری اعطا شود. اگر یک یوزر نیاز به دسترسی به زیر مجموعه‌های SUPER داشته باشد، ممکن است با اعطای یک یا چند امتیاز پویا که هر یک از آنها قابلیت‌های محدودتری نسبت به super دارند، به امتیاز مورد نظر خود برسد.

SUPER روی عملکردهای زیر و رفتارهای سرور تأثیر می‌گذارد:

  • تنظیمات سرور را با استفاده از SET GLOBAL و SET PERSIST به متغیرهای سراسری تغییر می‌دهد.
  • به کاربر امکان شروع و توقف فرایندهای مرتبط با replication که شامل including Group Replication می‌شود را می‌دهد.
  • استفاده از عبارت‌های CHANGE MASTER TO و CHANGE REPLICATION را فعال می‌کند.
  • کنترل گزارش‌های باینری را با استفاده از عبارت‌های PURGE BINARG و BINLOG فعال می‌کند.
  • استفاده از عبارات CREATE SERVER ، ALTER SERVER و DROP SERVER را فعال می‌کند.
  • اجرای توابع نسخه توکنی که تعریف شده است را توسط کاربر فعال می‌کند.
  • استفاده از فرمان اشکال زدایی mysqladmin را فعال می‌کند.
  • چرخش کلید رمزگذاری InnoDB را فعال می‌کند.

سطح دسترسی TRIGGER

سطح دسترسی TRIGGER مجموع عملیات‌های را فعال می‌کند. کاربر برای انجام create, drop, execute, or display triggers نسبت به یک دیتابیس باید امتیاز TRIGGER را دارا باشد.

سطح دسترسی UPDATE

به روزرسانی ردیف‌ها در جداول در یک پایگاه داده را ممکن می‌سازد.

امتیاز پویا در MySQL

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

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

توضیح تمام امتیازات پویا در MySQL در این زمان امکان پذیر نیست؛ بنابراین مهم‌ترین امتیازهای پویا در MySQL را توضیح خواهیم داد.

امتیاز پویا AUDIT_ADMIN

پیکربندی ورود به سیستم حسابرسی را فعال می‌کند. این امتیاز توسط افزونه audit_log تعریف شده است.

امتیاز پویا BACKUP_ADMIN

امتیاز پویا BACKUP_ADMIN اجرای عبارت LOCK INSTANCE FOR BACKUP و دسترسی به جدول عملکرد برنامه log_status را فعال می‌کند.

امتیاز پویا BINLOG_ADMIN

امتیاز پویا BINLOG_ADMIN، کنترل گزارش‌های باینری را با استفاده از عبارت‌های PURGE BINARG و BINLOG فعال می‌کند.

امتیاز پویا CLONE_ADMIN

امتیاز پویا CLONE_ADMIN اجرای جمله‌های CLONE را امکان پذیر می‌کند. شامل امتیازات BACKUP_ADMIN و SHUTDOWN است.

امتیاز پویا CLONE_ADMIN

امتیاز پویا CLONE_ADMIN اجرای جمله‌های CLONE را امکان‌پذیر می‌کند. شامل امتیازات BACKUP_ADMIN و SHUTDOWN است.

امتیاز پویا ENCRYPTION_KEY_ADMIN

امتیاز پویا ENCRYPTION_KEY_ADMIN چرخش کلید رمزگذاری InnoDB را فعال می‌کند.

امتیاز پویا FIREWALL_ADMIN

امتیاز پویا FIREWALL_ADMIN به کاربر امکان می‌دهد قوانین فایروال را برای هر کاربر اعمال کند. این امتیاز توسط افزونه MYSQL_FIREWALL تعریف شده است.

امتیاز پویا FIREWALL_USER

امتیاز پویا FIREWALL_USER به کاربران امکان می دهد قوانین فایروال خود را به روز کنند. این امتیاز توسط افزونه MYSQL_FIREWALL تعریف شده است.

سخن نهایی

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