MySQL یک سیستم مدیریت پایگاه داده منبع باز است که معمولاً به عنوان بخشی از پشته محبوب LAMP (Linux ، Apache ، MySQL ، PHP / Python / Perl) نصب می شود. این سیستم یک مدل رابطه ای را پیاده سازی می کند و برای مدیریت داده های خود از زبان پرس و جوی ساختاریافته (معروف به SQL) استفاده می کند.
در این آموزش نحوه نصب MySQL نسخه 8 بر روی 

سرور مجازی Ubuntu 20.04 بررسی می شود. با تکمیل آن ، شما یک پایگاه داده رابطه ای در حال کار خواهید داشت که می توانید برای ساختن وب سایت یا برنامه بعدی خود استفاده کنید.

پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
• یک 

سرور مجازی Ubuntu 20.04 با یک کاربر ادمین غیر ریشه و فایروال تنظیم شده با UFW . برای راه اندازی ، راهنمای ستاپ اولیه 

سرور مجازی برای اوبونتو 20.04 را دنبال کنید.

مرحله 1 – نصب MySQL
در Ubuntu 20.04 می توانید MySQL را با استفاده از مخزن بسته APT نصب کنید. در زمان نوشتن این مقاله، نسخه MySQL موجود در مخزن پیش فرض اوبونتو نسخه 8.0.19 است.
برای نصب آن ، اگر اخیراً این کار را نکرده اید ، فهرست بسته را روی 

سرور مجازی خود به روز کنید:
$ sudo apt update

سپس بسته mysql-server را نصب کنید:
$ sudo apt install mysql-server

این کار MySQL را نصب می کند ، اما از شما نمیخواهد که رمز عبوری تنظیم کنید یا تغییرات دیگری در پیکربندی ایجاد کنید. از آنجا که این امر باعث می شود نصب MySQL ناامن باشد ، در ادامه به این موضوع خواهیم پرداخت.

مرحله 2 – پیکربندی MySQL
برای نصب های جدید MySQL ، بهتر است اسکریپت امنیتی شامل DBMS را اجرا کنید. این اسکریپت برخی از گزینه های پیش فرض با ایمنی کمتر را برای مواردی مانند ورود به سیستم ریشه از راه دور و کاربران نمونه تغییر می دهد.
اسکریپت امنیتی را با sudo اجرا کنید:
$ sudo mysql_secure_installation

این امر مجموعه ای از اعلان ها را به شما نمایش میدهد که بتوانید برخی از گزینه های امنیتی نصب MySQL خود را تغییر دهید. اولین سؤال از شما میپرسد که آیا می خواهید افزونه Validate Password را تنظیم کنید ، که می تواند برای تست قدرت رمز ورود MySQL استفاده شود.
اگر تصمیم به تنظیم افزونه اعتبار سنجی گذرواژه بگیرید ، اسکریپت از شما می خواهد که یک سطح اعتبار رمز عبور را انتخاب کنید. قوی ترین سطح – که شما با وارد کردن 2 انتخاب می کنید – به حداقل 8 کاراکتر نیاز دارد و شامل ترکیبی از حروف بزرگ ، حروف کوچک ، عدد و علائم خاص است:
Output
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2

صرف نظر از این که آیا می خواهید افزونه رمز عبور معتبر را انتخاب کنید ، اعلان بعدی تعیین رمز عبور برای کاربر ریشه MySQL خواهد بود. Enter را بزنید و رمز عبور ایمن را تایید کنید:
Output
Please set the password for root here.

New password:

Re-enter new password:

اگر از افزونه اعتبار سنجی گذرواژه استفاده کرده اید ، در مورد قدرت رمزعبور جدید خود بازخورد دریافت خواهید کرد. سپس اسکریپت از شما سؤال می کند که آیا می خواهید رمز عبوری را که وارد کرده اید ادامه دهید یا می خواهید یک رمز جدید را وارد کنید. با فرض اینکه از قدرت رمز عبوری که تازه وارد کرده اید راضی هستید ، Y را برای ادامه اسکریپت وارد کنید:
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

از اینجا به بعد ، می توانید Y و سپس ENTER را فشار دهید تا پیش فرض برای همه سؤالات بعدی را بپذیرید. با این کار برخی از کاربران ناشناس و بانک اطلاعاتی تستی حذف می شوند ، ورود به سیستم ریشه از راه دور غیرفعال می شود و این قوانین جدید را بارگذاری می کند تا MySQL فوراً با تغییراتی که ایجاد کرده اید منطبق شود.
توجه داشته باشید که حتی اگر یک رمز عبور برای کاربر ریشه MySQL تنظیم کرده اید ، این کاربر برای تأیید اعتبار با گذرواژه هنگام اتصال به پوسته MySQL پیکربندی نشده است. در صورت تمایل می توانید با دنبال کردن مرحله 3 این تنظیمات را اعمال کنید.

مرحله 3 – تنظیم تأیید اعتبار و امتیازات کاربر (اختیاری)
در سیستم های اوبونتو که MySQL 5.7 را اجرا می کند (و نسخه های بعدی) ، کاربر ریشه MySQL برای تأیید اعتبار با استفاده از افزونه auth_socket بصورت پیش فرض و نه با گذرواژه تنظیم شده است. این امر امنیت و قابلیت استفاده بیشتر را در بسیاری از موارد امکان پذیر می کند ، اما همچنین می تواند مواردی را پیچیده تر کند که شما نیاز به دسترسی به کاربر توسط یک برنامه خارجی (مانند phpMyAdmin) دارید.
به منظور استفاده از رمز عبور برای اتصال به MySQL به عنوان root ، باید روش تأیید اعتبار آن را از auth_socket به افزونه دیگری مانند caching_sha2_password یا mysql_native_password تغییر دهید. برای این کار ، اعلان MySQL را از پایانه خود باز کنید:
$ sudo mysql

سپس ، با دستور زیر بررسی کنید که هر یک از حسابهای کاربری MySQL شما از کدام روش تأیید اعتبار استفاده میکند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در این مثال ، می بینید که کاربر ریشه با استفاده از افزونه auth_socket ، در واقع تأیید اعتبار می کند. برای پیکربندی حساب ریشه برای تأیید اعتبار با رمز عبور ، عبارت ALTER USER را اجرا کنید تا افزونه احراز هویت مورد استفاده خود را تغییر داده و یک رمز عبور جدید تنظیم کنید.
مطمئن شوید که رمز عبور را به رمز عبور قوی به انتخاب خود تغییر می دهید و آگاه باشید که این دستور رمز ریشه را که در مرحله 2 تنظیم کرده اید تغییر می دهد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;

توجه: جمله قبلی ALTER USER کاربر ریشه MySQL را برای تأیید اعتبار با افزونه caching_sha2_password تنظیم می کند. طبق مطالب رسمی MySQL ، caching_sha2_password افزونه ارجح تأیید هویت MySQL است ، زیرا رمزگذاری ایمن تر پسورد را نسبت به نسخه قدیمی تر به همراه دارد ، اما هنوز هم به طور گسترده استفاده می شود ، mysql_native_password.
با این حال ، بسیاری از برنامه های PHP برای مثال phpMyAdmin – با اطمینان با caching_sha2_password کار نمی کنند. اگر قصد استفاده از این پایگاه داده را با برنامه PHP دارید ، بهتر است تأیید اعتبار ریشه را با mysql_native_password انجام دهید:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

سپس ، PRUSILEGES FLUSH را اجرا کنید که به 

سرور مجازی می گوید جداول اعطای امتیاز را مجدد لود کرده و
تغییرات جدید را اعمال کند:
Mysql> FLUSH PRIVILEGES;

روش های تأیید اعتبار استفاده شده توسط هر یک از کاربران خود را دوباره بررسی کنید تا تأیید کنید که ریشه دیگر با استفاده از افزونه auth_socket احراز هویت نمی کند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | caching_sha2_password | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در این مثال می توانید مشاهده کنید که کاربر ریشه MySQL اکنون با استفاده از caching_sha2_password تأیید اعتبار می کند. پس از تأیید این موضوع روی 

سرور مجازی خود ، می توانید از پوسته MySQL خارج شوید:
Mysql> exit

از طرف دیگر ، به نظر برخی ممکن است اتصال به MySQL با یک کاربر اختصاصی برای گردش کارشان مناسب تر باشد. برای ایجاد چنین کاربری ، بار دیگر پوسته MySQL را باز کنید:
$ sudo mysql

توجه: اگر احراز هویت رمز عبور را برای ریشه فعال کرده اید ، همانطور که در پاراگراف های قبلی توضیح داده شد ، برای دسترسی به پوسته MySQL باید از دستور دیگری استفاده کنید. موارد زیر کلاینت MySQL شما را با حق امتیاز کاربر به طور منظم اجرا می کند و شما فقط با تأیید اعتبار ، امتیازات ادمین را در بانک اطلاعات دریافت خواهید کرد:
$ mysql -u root -p

از آنجا ، یک کاربر جدید ایجاد کرده و یک رمزعبور قوی به آن بدهید:
Mysql> CREATE USER ‘sammy’@’localhost’ IDENTIFIED BY ‘password’;

سپس امتیازات مناسب را به کاربر جدید خود اعطا کنید. به عنوان مثال ، شما می توانید امتیازات کاربر را به تمام جداول موجود در دیتابیس و همچنین قدرت اضافه کردن ، تغییر و حذف امتیازهای کاربر با این دستور اعطا کنید:
Mysql> GRANT ALL PRIVILEGES ON *.* TO ‘sammy’@’localhost’ WITH GRANT OPTION;

توجه داشته باشید که در این مرحله ، دیگر نیازی به اجرای فرمان FLUSH PRIVILEGES ندارید. این دستور فقط در صورت تغییر جدول های اعطای امتیاز با استفاده از عباراتی مانند INSERT ، UPDATE یا DELETE مورد نیاز است. از آنجا که شما به جای تغییر یک کاربر موجود، کاربر جدیدی ایجاد کرده اید،FLUSH PRIVILEGES در اینجا غیر ضروری است.
سپس ، از پوسته MySQL خارج شوید:
Mysql> exit

در آخر ، بیایید نصب MySQL را آزمایش کنیم.
مرحله 4 – تست MySQL
صرف نظر از نحوه نصب آن ، MySQL باید به صورت خودکار شروع به کار کند. برای آزمایش این موضوع ، وضعیت آن را بررسی کنید.
$ systemctl status mysql.service

خروجی مشابه زیر را مشاهده خواهید کرد:
Output
● mysql.service – MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
Main PID: 10382 (mysqld)
Status: Server is operational”
Tasks: 39 (limit: 1137)
Memory: 370.0M
CGroup: /system.slice/mysql.service
└─10382 /usr/sbin/mysqld

اگر MySQL در حال اجرا نیست ، می توانید آن را با sudo systemctl start mysql شروع کنید.
برای بررسی بیشتر، می توانید با استفاده از ابزار mysqladmin ، که یک کلاینت است و به شما امکان اجرای دستورات ادمین را می دهد ، به پایگاه داده وصل شوید. به عنوان مثال ، این دستور می گوید به عنوان ریشه به MySQL متصل شده (-u root) ، اعلان گذرواژه (-p) را پر کرده و نسخه را برگردانید.
$ sudo mysqladmin -p -u root version

باید خروجی مشابه این را ببینید:
Output
mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 8.0.19-0ubuntu5
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 10 min 44 sec

Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038

این بدان معنی است که MySQL در حال کار است.
نتیجه
اکنون یک ستاپ اولیه MySQL نصب شده در 

سرور مجازی خود دارید. در اینجا چند نمونه از مراحل بعدی که می توانید انجام دهید آورده شده است:
• یک پشته LAMP تنظیم کنید
• پرس و جوهای در حال اجرا را با SQL تمرین کنید

 

برچسب‌ها:


مشخصات

آخرین ارسال ها

آخرین وبلاگ ها

آخرین جستجو ها