همانطور که میدانید که برای استفاده از هر database یا پایگاه دادهها باید یک یا چند یوزرنیم مختص آن دیتابیس ساخته شود. برای امور دیتابیس مانند خوانش اطلاعات، حذف اطلاعات و غیره نیاز است که سطح دسترسیهای دیتابیس را برای یوزر مشخص کنیم. در این آموزش نحوه کنترل سطح دسترسیهای دیتابیس (organized collection of data in computing) را شرح خواهیم داد. اگر تا انتهای مقاله با آذرآنلاین همراه باشید، موارد زیر را خواهید آموخت:
- وظیفه سیستم مجوز دیتابیس MySQL
- تعیین سطح دسترسی های دیتابیس برای کاربر
- ترتیب کنترل سطح دسترسی های دیتابیس
- انواع سطح دسترسی های دیتابیس
- امتیاز پویا در MySQL
وظیفه سیستم مجوز دیتابیس MySQL
وظیفه اصلی سیستم مجوزهای دیتابیس MySQL کنترل سطح دسترسیهای database مانند انتخاب اطلاعات، ورود اطلاعات، حذف اطلاعات و آپدیت اطلاعات داخل دیتابیس است. کنترل سطح دسترسیهای دیتابیس مشخص میکند که کاربران فقط اجازه دارند عملیاتی را که برای آنها امتیازات مناسب دریافت کردهاند، انجام دهند.
تعیین سطح دسترسی های پایگاه داده برای کاربر
شما به عنوان مدیر سایت یا مدیر سرور و هاست برای هر کاربر دیتابیس سطح دسترسیهای مختلفی را تعیین میکنید. به بیان دیگر شما برای کنترل یوزر ساخته شده مختص دیتابیس محدودیتها و امتیازاتی را قائل میشوید. یک کاربر که با داشتن مجوز کامل دیتابیس اختیار کامل کنترل یک بانک اطلاعاتی خاص را دارد. این کاربر ممکن است بانک اطلاعاتی ایجاد کند، جداول و سایر اشیاء پایگاه داده را تغییر دهد، از بین جداول مختلف موجود در دیتابیس جدول مورد نظر را انتخاب کرده یا رکوردهای جدید را اضافه، حذف یا به روز کند.
ترتیب کنترل سطح دسترسی های دیتابیس
سطح دسترسیهای database به ترتیب زیر سازماندهی میشود:
- سطح دسترسی مدیریتی: این نوع از سطح دسترسیهای دیتابیس مجوز انجام تمام امور مربوط به تمام دیتابیسها را دارد. همچنین این نوع از دسترسی به عنوان دسترسی گلوبال یا سراسری نیز شناخته میشود.
- سطح دسترسی دیتابیس: این نوع از سطح دسترسی دیتابیسها به کاربر اجازه میدهد که به یک دیتابیس خاص و تمام آبجکتهای آن دیتابیس دسترسی داشته باشد.
- سطح دسترسی آبجکتها: این نوع از سطح دسترسی دیتابیسها به کاربر خود اجازه میدهد که آبجکتها و موارد خاصی را در دیتابیس تحت کنترل و مدیریت داشته باشد. این سطح دسترسی ممکن است برای آبجکتهای یک دیتابیس، برای کل دیتابیس یا برای کل دیتابیسهای موجود به کاربر اعطا شود.
کاربری که سطح دسترسی مدیریتی دارد، طبق مشخصههای زیر امکان انجام فعالیت روی پایگاه دادهها را داراست:
- File: طبق این مشخصه کاربری که سطح دسترسی مدیریت به دیتابیس را دارد، مجاز است که عملیات خوانش، نوشتن و حذف فایلهای درون سرور را انجام دهد.
- PROCESS: طبق این مشخصه کاربری که سطح دسترسی مدیریت به دیتابیس را دارد، مجاز است که تمام پروسسهای در حال اجرای دیتابیس را مشاهده کند.
- SUPER: طبق این مشخصه کاربری که سطح دسترسی مدیریت به دیتابیس را دارد، مجاز است اتصال کلاینتها را قطع کند و پیکربندی سرور را تغییر دهد.
- ALL: طبق این مشخصه کاربری که سطح دسترسی مدیریت به دیتابیس را دارد، تمام امتیازهای فوق الذکر به جز امکان اعطای سطح دسترسی به دیگر کاربران را خواهد داشت.
انواع سطح دسترسی های دیتابیس
از طریق کنترل سطح دسترسیهای database تعیین میکنید که کدام یوزر مجاز به انجام کدام عملیات روی دیتابیس مورد نظر است. در این مقاله مهمترین سطوح دسترسی و امتیازات به دیتابیس 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 برای انتخاب جداول است. کاربرانی که از این امتیاز برخوردار نیستند، فقط پایگاه دادههایی را مشاهده میکنند که برخی از امتیازات آن database را در اختیار دارند.
سطح دسترسی 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 تعریف شده است.
سخن نهایی
همانطور که میدانید، هنگام ساختن database در هاست یا سرور باید یک کاربری یا یوزر برای استفاده از دیتابیس تعریف کرد. پس از تعریف نام کاربری دیتابیس باید مشخص کنید که این یوزر مجاز به انجام چه فعالیتهایی روی پایگاه است و امکان دسترسی به انجام کدام تغییرات را دارد.