Skip to content
VDS · ডেটাবেস

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 ডিস্ক দ্রুত, কিন্তু এটি মাত্র একটি।