نصب MySQL در اوبونتو 18.04
يك سيستم مديريت پايگاه داده منبع باز است كه معمولاً به عنوان بخشي از پشته محبوب LAMP (Linux ، Apache ، MySQL ، PHP / Python / Perl) نصب مي شود. براي مديريت داده هاي خود از يك پايگاه داده رابطه اي و SQL (زبان پرس و جوي ساختار يافته) استفاده مي كند.
نصب نسخه كوتاه ساده است: فهرست بسته خود را به روز كنيد ، بسته mysql-server را نصب كنيد و سپس اسكريپت امنيتي گنجانده شده را اجرا كنيد.
$ sudo apt update
$ sudo apt install mysql-server
$ sudo mysql_secure_installation
در اين آموزش نحوه نصب MySQL نسخه 5.7 در سرور مجازي Ubuntu 18.04 توضيح داده خواهد شد. با اين حال ، اگر به دنبال به روزرساني نصب MySQL موجود به نسخه 5.7 هستيد ، مي توانيد به جاي اين راهنما، مقاله به روزرساني MySQL 5.7 را مطالعه كنيد.
پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
• يك سرور مجازي Ubuntu 18.04 كه طبق راهنماي تنظيم اوليه سرور مجازي تنظيم شده باشد و شامل يك كاربر غير ريشه با امتيازات sudo و فايروال باشد.
مرحله 1 – نصب MySQL
در اوبونتو 18.04 ، فقط آخرين نسخه MySQL بصورت پيش فرض در مخزن بسته APT گنجانده شده است. در زمان نوشتن اين مقاله نسخه MySQL 5.7 است .
براي نصب آن ، ايندكس بسته را بر روي سرور مجازي خود با apt به روز كنيد:
$ sudo apt update
سپس بسته پيش فرض را نصب كنيد:
$ sudo apt install mysql-server
اين كار MySQL را نصب مي كند ، اما از شما خواسته نمي شود كه رمز عبوري را تنظيم كنيد يا تغييرات ديگري در پيكربندي ايجاد كنيد. از آنجا كه اين كار باعث مي شود نصب MySQL ناامن باشد ، در ادامه به اين موضوع خواهيم پرداخت.
مرحله 2 – پيكربندي MySQL
براي ريفرش كردن نصب ها، بهتر است اسكريپت امنيتي موجود را اجرا كنيد. اين كار برخي از گزينه هاي پيش فرض با ايمني كمتر را براي مواردي مانند ورود به سيستم ريشه از راه دور و كاربران نمونه تغيير ميدهد. در نسخه هاي قديمي MySQL ، شما بايد دايركتوري داده را به صورت دستي نيز تنظيم كنيد ، اما اكنون اين كار به صورت خودكار انجام مي شود.
اسكريپت امنيتي را اجرا كنيد:
$sudo mysql_secure_installation
اين امر يك سري اعلان به شما نشان ميدهد كه مي توانيد برخي از گزينه هاي امنيتي نصب MySQL خود را تغيير دهيد. اولين سؤال از شما ميپرسد كه آيا مي خواهيد افزونه Validate Password را تنظيم كنيد ، كه مي تواند براي تست قدرت رمز ورود MySQL استفاده شود. صرف نظر از انتخاب شما ، اعلان بعدي تنظيم رمز عبور براي كاربر ريشه MySQL خواهد بود. رمز عبور مطمئن مورد نظر خود را وارد كرده و سپس تأييد كنيد.
از آنجا ، مي توانيد Y و سپس ENTER را فشار دهيد تا پيش فرض براي همه سؤالات بعدي را بپذيريد. با اين كار برخي از كاربران ناشناس و بانك اطلاعاتي آزمايشي حذف مي شوند ، ورود به سيستم ريشه از راه دور غيرفعال مي شود و اين قوانين جديد را لود مي كنند تا MySQL فوراً با تغييراتي كه ايجاد كرده ايد منطبق شود.
براي مقدار دهي اوليه دايركتوري داده MySQL ، مي توانيد از mysql_install_db براي نسخه هاي قبل از 5.7.6 ، و از mysqld –initialize براي 5.7.6 و بعد از آن استفاده كنيد. با اين حال ، اگر MySQL را از توزيع Debian نصب كرديد ، همانطور كه در مرحله 1 توضيح داده شد ، دايركتوري داده به طور خودكار آغاز مي شود. شما مجبور نيستيد كاري انجام دهيد. اگر به هر حال سعي كنيد دستور را اجرا كنيد ، خطاي زير را مشاهده خواهيد كرد:
Output
mysqld: Can’t create directory ‘/var/lib/mysql/’ (Errcode: 17 – File exists)
. . .
2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting
توجه داشته باشيد كه حتي اگر يك رمز عبور براي كاربر ريشه MySQL تنظيم كرده ايد ، اين كاربر براي تأييد اعتبار با گذرواژه هنگام اتصال به پوسته MySQL پيكربندي نشده است. در صورت تمايل مي توانيد با دنبال كردن مرحله 3 اين كار را انجام دهيد.
مرحله 3 – تنظيم تأييد اعتبار و امتيازات كاربر (اختياري)
در سيستم هاي اوبونتو كه MySQL 5.7 (و نسخه هاي بعدي) را اجرا مي كند ، تأييد اعتبار كاربر ريشه MySQL بصورت پيش فرض با استفاده از افزونه auth_socket و نه با گذرواژه تنظيم شده است. اين امر امنيت و قابليت استفاده بيشتر را در بسياري از موارد امكان پذير مي كند ، اما همچنين مي تواند مواردي را كه نياز داريد به يك برنامه خارجي (مانند phpMyAdmin) براي دسترسي به كاربر اجازه بدهيد، پيچيده تر كند.
به منظور استفاده از رمز عبور براي اتصال به MySQL به عنوان root ، بايد روش تأييد اعتبار آن را از auth_socket به mysql_native_password تغيير دهيد. براي اين كار ، اعلان MySQL را از پايانه خود باز كنيد:
$ sudo mysql
سپس ، با دستور زير بررسي كنيد كه هر يك از حسابهاي كاربري MySQL شما از كدام روش تأييد اعتبار استفاده ميكند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+——————+——————————————-+———————–+———–+
| user | authentication_string | plugin | host |
+——————+——————————————-+———————–+———–+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+——————+——————————————-+———————–+———–+
4 rows in set (0.00 sec)
در اين مثال ، مي بينيد كه كاربر ريشه با استفاده از افزونه auth_socket ، تأييد اعتبار مي كند. براي پيكربندي حساب ريشه براي تأييد اعتبار با رمز عبور ، دستور ALTER USER زير را اجرا كنيد. مطمئن شويد كه رمز عبور را به رمز عبوري قوي به انتخاب خود تغيير مي دهيد و توجه داشته باشيد كه اين دستور رمز اصلي را كه در مرحله 2 تنظيم كرده ايد تغيير مي دهد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;
سپس ، FLUSH PRIVILEGES را اجرا كنيد كه به سرور مجازي مي گويد جداول اعطاي امتياز را لود مجدد كند و تغييرات جديد شما را اعمال كند:
Mysql> FLUSH PRIVILEGES;
روش هاي تأييد اعتبار استفاده شده توسط هر يك از كاربران خود را دوباره بررسي كنيد تا تأييد كنيد كه ريشه ديگر با استفاده از افزونه auth_socket احراز هويت نمي كند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+——————+——————————————-+———————–+———–+
| user | authentication_string | plugin | host |
+——————+——————————————-+———————–+———–+
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+——————+——————————————-+———————–+———–+
4 rows in set (0.00 sec)
در اين مثال مي توانيد مشاهده كنيد كه كاربر ريشه MySQL اكنون با استفاده از يك رمز عبور تأييد اعتبار مي كند. پس از تأييد اين موضوع روي سرور مجازي خود ، مي توانيد از پوسته 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: en
Active: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min ago
Main PID: 3754 (mysqld)
Tasks: 28
Memory: 142.3M
CPU: 1.994s
CGroup: /system.slice/mysql.service
└─3754 /usr/sbin/mysqld
اگر MySQL در حال اجرا نيست ، مي توانيد آن را با sudo systemctl start mysql راه اندازي كنيد.
براي بررسي بيشتر ، مي توانيد با استفاده از ابزار mysqladmin ، كه يك كلاينت است و به شما امكان اجراي دستورات ادمين را مي دهد ، به پايگاه داده وصل شويد. به عنوان مثال ، اين دستور مي گويد به عنوان ريشه (-u root) به MySQL متصل شويد، اعلان گذرواژه را پر كنيد (-p) ، و نسخه را برگردانيد.
$ sudo mysqladmin -p -u root version
بايد خروجي مشابه اين را ببينيد:
Output
mysqladmin Ver 8.42 Distrib 5.7.21, for Linux on x86_64
Copyright (c) 2000, 2018, 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 5.7.21-1ubuntu1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 30 min 54 sec
Threads: 1 Questions: 12 Slow queries: 0 Opens: 115 Flush tables: 1 Open tables: 34 Que
اين بدان معني است كه MySQL در حال كار است.
نتيجه
اكنون يك ستاپ ساده MySQL روي سرور مجازي خود نصب كرده ايد. در اينجا چند نمونه از مراحل بعدي كه مي توانيد انجام دهيد آورده شده است:
اجراي برخي اقدامات امنيتي اضافي
جابجايي دايركتوري داده ها
مديريت سرور مجازي هاي MySQL خود با SaltStack
برچسب: ،