MySQL এবং MariaDB: ইনস্টলেশন এবং আপনার প্রথম ডেটাবেস
VDS-এ ডেটাবেস সার্ভার ইনস্টল করা, নিরাপদ প্রাথমিক সেটআপ, ডেটাবেস ও ইউজার তৈরি, কানেকশন যাচাই, এবং সাধারণ প্রথম এরর।
আপডেট: ২৩ আগস্ট, ২০২৬
MySQL এবং এর সামঞ্জস্যপূর্ণ শাখা MariaDB-ই বেশিরভাগ PHP সাইট চালায়। এদের কমান্ড ও ক্লায়েন্ট একই; পার্থক্য শুরু হয় ফাইন-টিউনিংয়ে।
ইনস্টলেশন
apt update && apt install -y mariadb-server # Debian, Ubuntu
dnf install -y mariadb-server # AlmaLinux, CentOS Stream
systemctl enable --now mariadb
যদি আপনার বিশেষভাবে Oracle-এর MySQL দরকার হয়, তাহলে এর অফিসিয়াল রিপোজিটরি থেকে mysql-server ইনস্টল করুন। সার্ভিসটির নাম হবে mysql।
শুরুতেই বেসিক ফাঁকগুলো বন্ধ করুন:
mariadb-secure-installation
স্ক্রিপ্টটি আপনাকে root পাসওয়ার্ড সেট করতে, অ্যানোনিমাস ইউজার সরাতে, রিমোট root লগইন নিষিদ্ধ করতে এবং টেস্ট ডেটাবেস মুছে ফেলতে বলবে। সবকিছুর উত্তর দিন “হ্যাঁ”।
ডেটাবেস ও ইউজার
আপনার অ্যাপ্লিকেশন root হিসেবে চালাবেন না — প্রতিটি প্রজেক্টের জন্য আলাদা ইউজার তৈরি করুন:
CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'shop'@'localhost' IDENTIFIED BY 'long-random-password';
GRANT ALL PRIVILEGES ON shop.* TO 'shop'@'localhost';
FLUSH PRIVILEGES;
utf8mb4 এনকোডিং বাধ্যতামূলক: MySQL-এ পুরোনো utf8 প্রতি অক্ষরে মাত্র তিন বাইট সংরক্ষণ করে এবং ইমোজি ও কিছু অক্ষরে ভেঙে পড়ে।
যাচাই করুন:
mariadb -u shop -p shop -e "SELECT 1;"
পারমিশন সম্পর্কে আরও জানতে দেখুন ইউজার ও গ্রান্ট।
প্রাথমিক সেটআপ
সেটিংসগুলো থাকে /etc/mysql/mariadb.conf.d/50-server.cnf বা /etc/my.cnf.d/-এ। শুরুতেই যেগুলো ঠিক করা উচিত তার ন্যূনতম তালিকা:
[mysqld]
bind-address = 127.0.0.1
innodb_buffer_pool_size = 1G
max_connections = 100
bind-address = 127.0.0.1 ডেটাবেসটি শুধু লোকালি অ্যাক্সেসযোগ্য রাখে। আপনার অ্যাপ্লিকেশন যদি একই মেশিনে থাকে, তাহলে এভাবেই থাকা উচিত। যদি বাইরে থেকে ডেটাবেস দরকার হয়, তাহলে কিছু পরিবর্তনের আগে রিমোট অ্যাক্সেস পড়ুন।
বাফার পুলের আকার টিয়ার অনুযায়ী নির্বাচন করা হয় — দেখুন মেমোরি টিউনিং।
সম্পাদনার পরে: systemctl restart mariadb।
সাধারণ ত্রুটি
| লক্ষণ | কারণ | কী করবেন |
|---|---|---|
Access denied for user | ভুল পাসওয়ার্ড বা ইউজার এন্ট্রি ভিন্ন হোস্টের সাথে বাঁধা | SELECT user, host FROM mysql.user; যাচাই করুন |
Can't connect through socket | সার্ভিসটি চলছে না | systemctl status mariadb, journalctl -u mariadb দেখুন |
Too many connections | অ্যাপ্লিকেশন কানেকশন বন্ধ করছে না | অ্যাপ্লিকেশন সাইডে পুল, তারপর max_connections |
| টেক্সট বিকৃত | ডেটাবেস ও কানেকশনের এনকোডিং ভিন্ন | সবকিছু utf8mb4-এ আনুন |
| রিবুটের পরে ডেটাবেস চালু হয় না | সার্ভিসটি বুটে চালু হওয়ার জন্য সেট করা নেই | systemctl enable mariadb |
মেশিনের কোনো স্বয়ংক্রিয় ব্যাকআপ নেই। আপনার প্রথম কার্যকর টেবিল তৈরির পরপরই ডাম্প সেট আপ করুন — ডেটাবেস ব্যাকআপ। NVMe ডিস্ক দ্রুত, কিন্তু এটি মাত্র একটি।