MariaDB یک سیستم مدیریت پایگاه دادهی رابطهای و متنباز است که معمولن بهعنوان جایگزینی برای MySQL شناخته میشود. یکی از مهمترین مزایای نسبت به MySQL بهبود کارایی و مقیاسپذیری آن است. MariaDB بهینه سازیهای زیادی در کد اصلی MySQL انجام داده است که باعث اجرای سریعتر کوئریها و بهبود کارایی آن شده است.
نصب MariaDB
ابتدا apt
را بهروزرسانی میکنیم:
sudo apt update
سپس بهکمک دستور زیر MariaDB را نصب میکنیم:
sudo apt install mariadb-server
با استفاده از دستور زیر MariaDB را روی سرور راهاندازی میکنیم:
sudo systemctl start mariadb.service
اکنون MariaDB را روی سرور نصب و راهاندازی کردهایم. از آنجایی که پیکربندی پیشفرض MariaDB امنیت لازم را تامین نمیکند از یک اسکریپت که بهوسیلهی mariadb-server
ارایه شده است برای محدود کردن دسترسی به دیتابیس استفاده میکنیم.
پیکربندی MariaDB
گام بعدی، اجرای اسکریپت امنیتی است. این اسکریپت گزینههای پیشفرضی که کمتر امن هستند مانند ورود با Root یا کاربران نمونه (Sample) را تغییر میدهد.
با وارد کردن دستور زیر اسکریپت امنیتی را اجرا کنید:
sudo mysql_secure_installation
این کار شما را از طریق مجموعهای از دستورها راهنمایی میکند تا تغییراتی در گزینههای امنیتی MariaDB ایجاد کنید.
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 را فشار دهید تا «هیچکدام» را انتخاب کنید.
. . . 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
درخواست بعدی از شما میپرسد که آیا میخواهید رمز عبور Root پایگاه داده را تنظیم کنید یا خیر. در Ubuntu، کاربر Root در MariaDB وابسته به فرآیندهای نگهداری (Maintenance) خودکار سیستم است، بنابراین نباید روشهای احراز هویت پیکربندیشده را برای آن تغییر دهیم. انجام این کار این امکان را ایجاد میکند که یک بهروزرسانی بسته، سیستم پایگاه داده را تخریب کند. N را وارد کرده و سپس ENTER را فشار دهید.
از این گام به بعد، میتوانید Y و سپس ENTER را فشار دهید تا پیشفرضها را برای تمام سوالهای بعدی بپذیرید. با این کار برخی از کاربران ناشناس و پایگاه دادهی آزمایشی حذف میشوند و ورود از طریق Root غیرفعال میشود.
اکنون که پیکربندی امنیتی MariaDB را انجام دادهاید اگر میخواهید با یک رمز عبور وارد MariaDB شوید، گام بعد را دنبال کنید.
ایجاد یک کاربر ادمین با پسورد
با نصب MariaDB 10.3 روی Ubuntu، یوزر Root ماریادیبی بهشکل پیشفرض به جای پسورد از پلاگین unix_socket
برای احراز هویت استفاده میکند. این ویژگی میتواند امنیت و کاربری آن را در بسیاری موارد افزایش دهد اما در برخی شرایط مانند دادن دسترسی ادمین به برنامههای خارجی مثل phpMyAdmin میتواند فرآیندها را پیچیده کند.
با توجه به اینکه کارهایی مثل راهاندازی و توقف MariaDB با کاربر Root آن انجام میشود، توصیه میشود تنظیمات آن را تغییر ندهیم. به جای آن، میتوانیم یک کاربر با دسترسیهای ادمین، قابلیتهای Root و پسورد بسازیم.
ترمینال MariaDB را با دستور زیر باز کنید:
sudo mariadb
سپس یک کاربر جدید با دسترسیهای Root و رمز عبور ایجاد کنید. حتمن نام کاربری (در اینجا admin) و رمز عبور (در اینجا password) را بر اساس نیازتان تغییر دهید:
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
سپس دستور زیر را وارد کنید:
FLUSH PRIVILEGES;
حال میتوانید از ترمینال MariaDB خارج شوید:
exit
استفاده از MariaDB
MariaDB پس از نصب بهشکل خودکار شروع به اجرا میکند. برای بررسی وضعیت آن میتوانید از دستور زیر استفاده کنید:
sudo systemctl status mariadb
اگر خروجیای مشابه زیر دریافت کردید یعنی MariaDB بهدرستی در حال اجراست:
● 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 Socket
و با root به MariaDB متصل میشوید و میتوانید نسخهی آن را بررسی کنید:
sudo mysqladmin version
خروجی بهشکل زیر خواهد بود:
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 شوید:
mysql -u admin -p
سپس از شما خواسته میشود تا پسوردتان را وارد کنید. پس از آن میتوانید با استفاده از دستور زیر یک دیتابیس بسازید:
CREATE DATABASE <database_name>;
مقدار <database_name>
را به نامی که در نظر دارید تغییر دهید. با استفاده از دستور زیر میتوانید همهی دیتابیسهای موجود را لیست کنید تا مطمین شوید دیتابیس شما ساخته شده است:
SHOW DATABASES;
کار کردن با جدولها
برای ساخت یک جدول ابتدا لازم است تا با دستور mysql -u admin -p
و ورود پسوردتان، وارد ماریا دیبی شوید. سپس با استفاده از دستور زیر دیتابیسی که میخواهید در آن جدول بسازید انتخاب کنید:
USE <database_name>;
مقدار <database_name>
را به نامی که در نظر دارید تغییر دهید.
ساخت جدول
اکنون میتوانید با استفاده از دستور زیر یک جدول با نام customers بسازید که دارای ۴ ستون ID، نام، ایمیل و زمان ساخت باشد:
CREATE TABLE customers ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT NOW() );
Insert کردن دادهها
برای این کار از دستوری بهشکل زیر استفاده میکنیم:
INSERT INTO customers (name, email) VALUES ('John Smith', 'john@example.com');
این دستور یک ردیف با نام John Smith
و ایمیل john@example.com
ایجاد میکند. مقدارهای id
و created_at
نیر بهطور خودکار تعیین میشوند.
Select کردن دادهها
برای دریافت داده از جدول میتوانید از دستوری بهشکل زیر استفاده کنید:
SELECT name, email FROM customers;
این دستور ستونهای name
و email
را از جدول customers
دریافت میکند.
Update کردن دادهها
برای بهروزرسانی دادههای جدول میتوانید از دستوری بهشکل زیر استفاده کنید:
UPDATE customers SET email = 'new-email@example.com' WHERE id = 1;
این دستور ایمیل ردیف ۱ از جدول customers
را به new-email@example.com
تغییر میدهد.
Delete کردن دادهها
برای حذف دادههای جدول میتوانید از دستوری بهشکل زیر استفاده کنید:
DELETE FROM customers WHERE id = 1;
این دستور دادههای ردیف ۱ جدول customers
را حذف میکند.
برای راهنمایی بیشتر میتوانید