دیتابیس MariaDB یک سیستم مدیریت پایگاه داده رابطهای منبعباز (DBMS) است که جایگزینی برای فناوری دیتابیس MySQL به شمار میرود. این دیتابیس توسط توسعهدهندگانی که نقش کلیدی در ساخت پایگاه داده اصلی داشتند، به عنوان یک فورک نرمافزار MySQL ساخته شد. این توسعهدهندگان، MariaDB را در پاسخ به خرید MySQL توسط Oracle Corp در سال 2009 ایجاد کردند.
در ادامه، میخواهیم به دیتابیس MariaDB و نحوه نصب آن در اوبونتو بپردازیم.
MariaDB چیست؟
برای آشنایی کامل با MariaDB، باید یک شناخت مختصر از دیتابیس داشته باشید و بدانید که دیتابیس چیست و چه کاری انجام میدهد.
سرور MariaDB یکی از محبوبترین سرورهای پایگاه داده در جهان است. این سرور، توسط همان توسعهدهندگانی ساخته شده که پایگاه داده MySQL را ایجاد کردهاند. سازندگان دیتابیس MariaDB تضمین کردهاند که این سرور پایگاه داده برای همیشه به صورت منبعباز باقی میماند.
از کاربران شناختهشده دیتابیس MariaDB میتوان به Google، Wikipedia و WordPress.com اشاره نمود. کار MariaDB این است که دادهها را در طیف گستردهای از برنامهها (از بانکداری گرفته تا وبسایتها) به اطلاعات ساختار یافته تبدیل کند. این دیتابیس بسیار سریع، قوی و مقیاس پذیر بوده و شامل یک اکوسیستم غنی از موتورهای ذخیرهسازی، پلاگینها و بسیاری از ابزارهای دیگر است.
به عبارتی دیگر، MariaDB به عنوان یک دیتابیس رابطهای، یک رابط SQL برای دسترسی ایمن به دادهها را فراهم میکند.
مقایسه MariaDB و MySQL
با وجود اینکه ساختار MariaDB و MySQL مشابه یکدیگر هستند، اما چندین تفاوت کلیدی بین آنها وجود دارد. در ادامه به بررسی تفاوتهای دیتابیس MariaDB و دیتابیس MySQL میپردازیم…
موتورهای ذخیرهسازی: MariaDB دارای 12 موتور ذخیرهسازی جدید است که این موتورها، در MySQL پیدا نمیشود. به عبارت دیگر، MySQL گزینههای ذخیرهسازی کمتری نسبت به MariaDB دارد.
سرعت: سرعت ماریا دیبی نسبت به MySQL بسیار بیشتر است.
سال انتشار اولیه: MySQL در سال 1995 و MariaDB در سال 2009 منتشر شدند.
سیستم عامل سرور: سیستم عاملهای سرور ماریا دیبی شامل FreeBSD، Linux، macOS، Solaris، Windows و سیستم عاملهای سرور MySQL شامل FreeBSD، Linux، OS X، Solaris و Windows هستند.
کش/ایندکس: با موتور ذخیرهسازی حافظه دیتابیس MariaDB، دستور INSERT تا ۲۴٪ سریعتر از MySQL اجرا میشود.
استخر اتصال (Connection Pool): ماریا دیبی دارای یک استخر اتصال thread pool پیشرفته است که میتواند سریعتر از MySQL اجرا شده و از بیش از 200000 اتصال همزمان پشتیبانی میکند.
پاسخ بهبودیافته: پاسخها در MariaDB سریعتر و ایمنتر از MySQL هستند. همچنین، بهروزرسانیها در MariaDB سریعتر از MySQL است.
افزونه ها/ویژگیها: MariaDB دارای افزونهها و ویژگیهای جدیدتری نسبت به MySQL است. برخی از این ویژگیها که در دیتابیس MySQL وجود ندارند عبارتند از دستورات WITH، JSON و KILL. البته دیتابیس MariaDB برخی از ویژگیهای سازمانی MySQL را ندارند.
Priority code: پایگاه داده MariaDB اجازه دسترسی کاربران به این محتوای اختصاصی را نمیدهد. MySQL در نسخه Enterprise خود از برخی proprietary codeها استفاده میکند.
Data Masking : Data Masking در MySQL انجام میشود. این قابلیت در MariaDB وجود ندارد.
ستونهای پویا: ستونهای پویا در MySQL قابل دسترسی هستند، اما در MariaDB چنین قابلیتی وجود ندارد.
نظارت: نظارت در MariaDB توسط SQLyog و در MySQL توسط MySQL workbench انجام میشود.
مسیریابی: مسیریابی در MariaDB توسط MariaDB MaxScale و در MySQL توسط Mysql Router انجام میشود.
تجزیه و تحلیل: سیستم تجزیه و تحلیل در MariaDB توسط MariaDB ColumnStore انجام میشود. این قابلیت در MySQL وجود ندارد.
مدل پایگاه داده ثانویه: در MariaDB شامل Document store و Graph DBMS و در MySQL فقط شامل Document store میشود.
تعداد امتیاز (ستاره) در گیت هاب: در سایت گیتهاب به دیتابیس MariaDB حدود 2.8K و به MySQL حدود 4K امتیاز داده شده است.
فورک: MariaDB دارای 868 و MySQL دارای 1.6K انشعاب یا فورک هستند.
نصب MariaDB در اوبونتو
نصب ماریا دی بی در لینوکس اوبونتو با چند گام ساده انجام میشود. خلاصهترین راه برای این کار، شامل 3 مرحله است:
- package index خود را با استفاده از دستور apt به روزرسانی کنید.
- پکیج mariadb-server را با استفاده از دستور apt دانلود کنید.
- برای محدود کردن دسترسی به سرور، اسکریپت امنیتی mysql_secure_installation را اجرا کنید.
در این آموزش، ما نحوه نصب بر روی سرور ابونتو 20.04 را توضیح میدهیم. شما میتوانید این دیتابیس را بر سرور مجازی لینوکس نیز نصب و اجرا کنید.
مرحله 1:
برای نصب نصب MariaDB در ابونتو، باید package index را با استفاده از دستور apt بر روی سرور خود به روز رسانی کنید:
sudo apt update
سپس، پکیج را با استفاده از کد زیر دانلود کنید:
sudo apt install mariadb-server
در قدم بعدی، باید مطمئن شوید که دیتاسبیس با دستور systemctl start اجرا میشود:
sudo systemctl start mariadb.service
با استفاده از دستورات بالا، میتوانید MariaDB را بر روی سرور اختصاصی خود نصب و راهاندازی نمایید؛ اما در این روش، از شما درخواست تغییر پیکربندی یا تعیین رمز عبور نمیشود. از آنجایی که پیکربندی پیشفرض MariaDB برای شما ناامن است، بهتر است از اسکریپتی که در پکیج mariadb-server برای محدودسازی دسترسی به سرور و حذف حسابهای استفاده نشده قرار دارد، استفاده کنید. در مرحله بعدی، به نصب این اسکریپت میپردازیم.
مرحله 2:
گام بعدی در نصب MariaDB در ابونتو، اجرای اسکریپت امنیتی است. این اسکریپت، به شما کمک میکند تا امنیت ورود به سیستم از راه دور و کاربران نمونه را افزایش دهید. برای اینکار، اسکریپت امنیتی زیر را اجرا کنید:
sudo mysql_secure_installation
این اسکریپت از طریق یک سری دستورات، به شما کمک میکند تا تغییراتی را در گزینههای امنیتی MariaDB ایجاد کنید. پس از اجرای دستور بالا، اعلان زیر نمایان میشود و از شما خواسته میشود که برای دیتابیس فعلی، یک رمز عبور تعیین کنید:
Output NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none):
از آنجایی که در حال حاضر هیچ رمز عبوری ندارید، کلید “ENTER” را فشار دهید تا گزینه “none” انتخاب شود.
اعلان بعدی از شما میپرسد که آیا قصد تنظیم رمز عبور ریشه دیتابیس MariaDB را دارید یا خیر؟ در اوبونتو، حساب ریشه برای MariaDB به تعمیر و نگهداری سیستم خودکار مربوط است. در نتیجه، نباید روشهای احراز هویت پیکربندی شده برای آن حساب را تغییر دهید؛ در غیر اینصورت، بهروزرسانی پکیج انجام شده و با حذف دسترسی به حساب اجرایی، سیستم دیتابیس خراب میشود.
Output . . . OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] N
پس از مشاهده اعلان بالا، حرف “N” را تایپ کرده و کلید “ENTER” را فشار دهید.
اگر میخواهید تمام پیشفرضها برای سوالات بعدی را بپذیرید، کلید “Y” و سپس “ENTER” را فشار دهید. با انجام این کار، برخی کاربران ناشناس و دیتابیس آزمایشی حذف میشود و ورود به سیستم ریشه از راه دور غیر فعال میشود.
خب! در اینجا پیکربندی امنیتی اولیه MariaDB به پایان رسید. مرحله بعد، یک مرحله اختیاری است. اگر میخواهید با یک رمز عبور در سرور دیتابیس احراز هویت شوید، مرحله بعدی را انجام دهید.
مرحله 3 (اختیاری – ایجاد حساب کاربری اجرایی که از احراز هویت به وسیله رمز عبور استفاده میکند):
در سیستمهای اوبونتو که MariaDB ورژن 10.3 را اجرا میکنند، کاربر ریشه به طور پیشفرض با استفاده از افزونه unix_socket احراز هویت میشود. با اینکه این افزونه قابلیت و موارد امنیتی زیادی دارد، اما در مواردی که نیاز به اجازه دادن به حقوق یک برنامه خارجی مدیریتی را دارید، شرایط کمی پیچیده میشود.
به خاطر اینکه سرور از حساب ریشه برای کارهایی مانند توقف سرور، راهاندازی و چرخش گزارش استفاده میکند، بهتر است جزئیات احراز هویت حساب ریشه را تغییر ندهید. شاید تغییر در فایل پیکربندی که در مسیر /etc/mysql/debian.cnf قرار دارد در ابتدا مفید به نظر برسد، اما با بهروزرسانی پکیج، احتمال بازنویسی شدن تغییرات وجود دارد.
به جای این کار، توصیه میشود که از یک حساب اجرایی جداگانهی مبتنی بر رمز عبور برای دسترسی به سرور استفاده کنید.
برای این کار، یک حساب کاربری جدید به نام admin با قابلیتهای اکانت ریشه که برای احراز هویت با رمز عبور، پیکربندی شده است را ایجاد کنید. در ادامه، در ترمینال، درخواست MariaDB را اجرا کنید:
sudo mariadb
سپس، یک کاربر جدید در سطح ریشه و دسترسی مبتنی بر رمز عبور را ایجاد کنید. در زمان انجام این کار، باید نام کاربری و رمز عبور خود را تغییر دهید:
MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
برای اطمینان از ذخیرهسازی و در دسترس بودن این تنظیمات در جلسه جاری، دستور زیر را اجرا کنید:
MariaDB [(none)]> FLUSH PRIVILEGES;
سپس، با دستور زیر از پوسته خارج شوید:
MariaDB [(none)]> exit
حال بیایید با یکدیگر نصب MariaDB را آزمایش کنیم…
مرحله 4 (آزمایش MariaDB):
زمانی که دیتابیس از مخازن پیشفرض نصب شود، به طور خودکار شروع به اجرا میکند. برای آزمایش این دیتابیس، باید وضعیت آن را با دستور زیر بررسی کنید.
sudo systemctl status mariadb
پس از اجرای دستور بالا، یک خروجی با متن زیر دریافت خواهید کرد:
Output ● mariadb.service - MariaDB 10.3.22 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-05-12 13: 38: 18 UTC; 3min 55s ago Docs: man: mysqld(8) https: //mariadb.com/kb/en/library/systemd/ Main PID: 25914 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 2345) Memory: 65.6M CGroup: /system.slice/mariadb.service └─25914 /usr/sbin/mysqld . . .
در صورتی که MariaDB در حال اجرا نیست، میتوانید آن را با دستور زیر اجرا کنید:
sudo systemctl start mariadb
برای بررسی بیشتر، میتوانید با ابزار mysqladmin (کلاینتی است که امکان اجرای دستورات مدیریتی را میدهد) به دیتابیس خود وصل شوید. به عنوان مثال، با اجرای این دستور، اعلانی ظاهر میشود و به شما میگوید که با استفاده از سوکت Unix به عنوان ریشه، به دیتابیس وصل شدهاید و نسخه آن را نمایش میدهد:
Output mysqladmin Ver 9.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.3.22-MariaDB-1ubuntu1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 4 min 49 sec Threads: 7 Questions: 467 Slow queries: 0 Opens: 177 Flush tables: 1 Open tables: 31 Queries per second avg: 1.615
در صورتی که یک کاربر اجرایی جداگانه را با احراز هویت به روش رمز عبور پیکربندی کردهاید، میتوانید با تایپ دستور زیر در ترمینال، عملیات مشابه را انجام دهید:
mysqladmin -u admin -p version
این به این معنی است که دیتابیس MariaDB راهاندازی شده و کاربر میتواند با موفقیت عملیات احراز هویت را انجام دهد.
ایجاد پایگاه داده در MariaDB
برای ایجاد پایگاه داده، مراحل زیر را دنبال کنید:
با استفاده از رابط خط فرمان، وارد سرور MariaDB شوید. همچنین میتوانید این کار را با باز کردن ترمینال و تایپ دستور زیر انجام دهید. سپس، به جای username نام کاربری و به جای hostname نام میزبان یا IP سرور خود را جایگزین کنید:
mysql -u username -h hostname -p
در مرحله بعد، از شما خواسته میشود که رمز عبورتان را وارد کنید.
پس از ورود موفقیتآمیز به سیستم، با تایپ دستور زیر در ترمینال، یک پایگاه داده جدید ایجاد خواهید کرد:
CREATE DATABASE database_name
در دستور بالا، به جای database_name، نام پایگاه داده مورد نظرتان را بنویسید.
پس از اجرای دستور بالا، با اجرای دستور زیر، بررسی کنید که آیا دیتابیس جدید ایجاد شده است یا خیر:
SHOW DATABASES
در اعلانی که ظاهر میشود، باید نام پایگاه داده جدید و پایگاه دادههای قبلی که روی سرور ایجاد شدهاند را مشاهده کنید.
پشتیبانگیری و بازگردانی اطلاعات
برای بازیابی و پشتیبان گیری دیتابیس میتوانید از خط فرمان mysqldump استفاده کنید.
پشتیبانگیری
برای ایجاد یک نسخه پشتیبان از دیتابیس خود، دستور زیر را در خط فرمان تایپ کنید:
mysqldump -u [username] -p [database_name] > [backup_file_name].sql
به جای [username] نام کاربری پایگاه داده، به جای [database_name] نام پایگاه دادهای که میخواهید از آن نسخه پشتیبان تهیه کنید و به جای [backup_file_name] نام فایل پشتیبان (با پسوند .sql نوشته شود) را وارد کنید. پس از اجرای دستور بالا، از شما رمز عبور پایگاه داده خواسته میشود.
با این کار، شما یک نسخه پشتیبان از پایگاه داده موردنظرتان در اختیار خواهید داشت.
بازیابی
برای بازیابی دیتابیس از نسخه پشتیبان، میتوانید از دستور زیر استفاده کنید:
mysql -u [username] -p [database_name] < [backup_file_name].sql
به جای [username] نام کاربری پایگاه داده، به جای [database_name] نام پایگاه دادهای که میخواهید بازیابی کنید و به جای [backup_file_name] نام فایل پشتیبان (با پسوند .sql نوشته شود) را وارد کنید. پس از اجرای دستور بالا، از شما خواسته میشود که رمز عبور دیتابیس را وارد کنید.
پس از وارد کردن رمز عبور، پایگاه دادهی مشخصشده از طریق فایل پشتیبان شما، بازیابی میشود.