উবুন্টু (20.04 / 22.04 / 24.04) এ মারিয়া ডিবি কীভাবে ইনস্টল করবেন – সম্পূর্ণ সেটআপ ও সিকিউরিটি গাইড

目次

উবুন্টুতে মারিয়াডিবি ইনস্টল করার দ্রুততম উপায় (20.04 / 22.04 / 24.04 সমর্থিত)

আপনি যদি তৎক্ষণাৎ উবুন্টুতে মারিয়াডিবি ব্যবহার শুরু করতে চান, তবে নিচের ধাপগুলো অনুসরণ করে ইনস্টলেশন এবং স্টার্টআপ যাচাই সম্পন্ন করুন। নির্দিষ্ট কোনো কারণ না থাকলে, উবুন্টুর ডিফল্ট রিপোজিটরি থেকে ইনস্টল করা সবচেয়ে নিরাপদ এবং স্থিতিশীল বিকল্প।

① প্যাকেজ তথ্য আপডেট করুন

sudo apt update
sudo apt upgrade -y

② মারিয়াডিবি ইনস্টল করুন

sudo apt install -y mariadb-server mariadb-client

ইনস্টলেশনের সময় কোনো বিশেষ কনফিগারেশন প্রয়োজন নেই। সম্পন্ন হলে, মারিয়াডিবি সার্ভিস স্বয়ংক্রিয়ভাবে শুরু হবে।

③ মারিয়াডিবি চলছে কিনা যাচাই করুন

sudo systemctl status mariadb

active (running) প্রদর্শিত হলে, মারিয়াডিবি সঠিকভাবে চলছে।

④ অটো-স্টার্ট সক্রিয় করুন (সাধারণত প্রয়োজন নেই তবে নিশ্চিত করার জন্য সুপারিশ করা হয়)

sudo systemctl enable mariadb

⑤ মারিয়াডিবিতে সংযোগ করুন এবং অপারেশন যাচাই করুন

sudo mysql

নিম্নলিখিত প্রম্পট দেখলে, ইনস্টলেশন সফল হয়েছে:

MariaDB [(none)]>

বাহির হতে, টাইপ করুন exit;

ইনস্টলেশনের পরে বাধ্যতামূলক নিরাপত্তা আরম্ভ

ইনস্টলেশনের সঙ্গে সঙ্গে, মারিয়াডিবিতে কেবল ন্যূনতম নিরাপত্তা সেটিংস প্রয়োগ করা থাকে। নিম্নলিখিত কমান্ডটি চালাতে নিশ্চিত করুন:

sudo mysql_secure_installation

সাধারণত, নিম্নলিখিত উত্তরগুলি সুপারিশ করা হয়:

  • অজ্ঞাত ব্যবহারকারী মুছে ফেলুন → Y
  • রিমোটে রুট লগইন নিষিদ্ধ করুন → Y
  • টেস্ট ডাটাবেস মুছে ফেলুন → Y
  • প্রিভিলেজ টেবিল রিলোড করুন → Y

এভাবে উবুন্টুতে একটি নিরাপদ মারিয়াডিবি পরিবেশের সেটআপ সম্পন্ন হয়।

উবুন্টু সংস্করণ অনুযায়ী ইনস্টল করা মারিয়াডিবি সংস্করণ

  • Ubuntu 20.04 → MariaDB 10.3 সিরিজ
  • Ubuntu 22.04 → MariaDB 10.6 সিরিজ
  • Ubuntu 24.04 → MariaDB 10.11 সিরিজ (LTS)

বেশিরভাগ ব্যবহারকারীর জন্য, উবুন্টুর ডিফল্ট সংস্করণ যথেষ্ট। সর্বশেষ ফিচার দরকার হলে কেবল অফিসিয়াল রিপোজিটরি বিবেচনা করুন।

ইনস্টলেশন ব্যর্থ হলে বা সার্ভিস শুরু না হলে দ্রুত চেকগুলো

  • sudo systemctl status mariadb দিয়ে ত্রুটি চেক করুন
  • sudo journalctl -xe দিয়ে বিস্তারিত লগ চেক করুন
  • df -h দিয়ে ডিস্ক স্পেস চেক করুন

বেশিরভাগ ক্ষেত্রে, সমস্যাটি হয় ডিস্ক স্পেস অপর্যাপ্ত অথবা কনফিগারেশন ফাইলের টাইপো।

আপনার উবুন্টু সংস্করণের জন্য সঠিক মারিয়াডিবি সংস্করণ নির্বাচন করা

উবুন্টুতে মারিয়াডিবি ব্যবহার করার সময়, বেশিরভাগ ক্ষেত্রে সবচেয়ে নিরাপদ বিকল্প হল ডিফল্ট রিপোজিটরি সংস্করণ। নিরাপত্তা আপডেট এবং ডিপেনডেন্সি সামঞ্জস্য স্বয়ংক্রিয়ভাবে বজায় থাকে, যা নবীন এবং মধ্যম স্তরের ব্যবহারকারীদের জন্য আদর্শ।

উবুন্টু ডিফল্ট রিপোজিটরি সংস্করণ (প্রস্তাবিত)

  • Ubuntu 20.04 → MariaDB 10.3 সিরিজ
  • Ubuntu 22.04 → MariaDB 10.6 সিরিজ
  • Ubuntu 24.04 → MariaDB 10.11 সিরিজ (LTS)

নির্দিষ্ট কোনো প্রয়োজন না থাকলে, এই সংস্করণগুলো প্রোডাকশন ব্যবহারের জন্য সম্পূর্ণ ব্যবহারযোগ্য।

আপনাকে যদি সর্বশেষ সংস্করণ দরকার হয় (অফিসিয়াল মারিয়াডিবি রিপোজিটরি যোগ করুন)

আপনাকে যদি সর্বশেষ ফিচার দরকার হয়, অফিসিয়াল মারিয়াডিবি রিপোজিটরি যোগ করতে পারেন। যেহেতু apt-key অব্যবহৃত, তাই এটি signed‑by পদ্ধতি ব্যবহার করে।

① GPG কী সংরক্ষণ করুন

sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://mariadb.org/mariadb_release_signing_key.asc \
  | sudo gpg --dearmor -o /etc/apt/keyrings/mariadb.gpg

② আপনার উবুন্টু কোডনেম চেক করুন

lsb_release -cs

উদাহরণ:

  • 20.04 → focal
  • 22.04 → jammy
  • 24.04 → noble

③ অফিসিয়াল রিপোজিটরি যোগ করুন (উদাহরণ: 10.11 সিরিজ)

echo "deb [signed-by=/etc/apt/keyrings/mariadb.gpg] \
https://mirror.mariadb.org/repo/10.11/ubuntu \
$(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/mariadb.list

④ প্যাকেজ আপডেট করুন এবং ইনস্টল করুন

sudo apt update
sudo apt install mariadb-server mariadb-client

অফিসিয়াল রিপোজিটরি ব্যবহার করার সময় নোটস

  • উবুন্টু ডিফল্ট সংস্করণের চেয়ে নতুন ফিচার ব্যবহার করতে পারেন
  • ভবিষ্যতে ডিপেনডেন্সি কনফ্লিক্টের ঝুঁকি থাকতে পারে
  • প্রোডাকশন সার্ভারের জন্য পূর্ণাঙ্গ টেস্টিং প্রয়োজন

প্রোডাকশনের জন্য, স্থিতিশীলতা নাকি সর্বশেষ ফিচারকে অগ্রাধিকার দেবেন তা স্পষ্টভাবে সিদ্ধান্ত নিন।

বর্তমানে ইনস্টল করা MariaDB সংস্করণ কীভাবে পরীক্ষা করবেন

mysql --version

উদাহরণ:

mysql  Ver 15.1 Distrib 10.6.16-MariaDB

সংস্করণ স্পষ্টভাবে নিশ্চিত করার মাধ্যমে, ট্রাবলশুটিং এবং মাইগ্রেশন কাজ অনেক সহজ হয়ে যায়।

প্রাথমিক MariaDB নিরাপত্তা সেটআপের সম্পূর্ণ গাইড (mysql_secure_installation)

MariaDB ইনস্টল করার সঙ্গে সঙ্গে কেবল ন্যূনতম নিরাপত্তা সেটিংস প্রয়োগ হয়। নিরাপদে কাজ করার জন্য, নিম্নলিখিত কমান্ডটি চালাতে নিশ্চিত হন:

sudo mysql_secure_installation

চালানোর সময়, বেশ কয়েকটি প্রম্পট দেখা যাবে। অধিকাংশ ক্ষেত্রে, নিম্নলিখিত উত্তরগুলি সুপারিশ করা হয়।

প্রস্তাবিত উত্তরসমূহ

  • root-এর বর্তমান পাসওয়ার্ড লিখুন: → এন্টার চাপুন (প্রথম চালুতে সেট করা নেই)
  • unix_socket প্রমাণীকরণে পরিবর্তন করবেন? → Y (Ubuntu-এ সুপারিশকৃত)
  • root পাসওয়ার্ড পরিবর্তন করবেন? → N (যদি unix_socket প্রমাণীকরণ ব্যবহার করা হয়)
  • অজ্ঞাত ব্যবহারকারী মুছে ফেলবেন? → Y
  • দূর থেকে root লগইন নিষিদ্ধ করবেন? → Y
  • test ডাটাবেস এবং তার অ্যাক্সেস মুছে ফেলবেন? → Y
  • এখন প্রিভিলেজ টেবিল রিলোড করবেন? → Y

এটি মৌলিক নিরাপত্তা কনফিগারেশন সম্পন্ন করে।

কেন আপনি root হিসেবে লগইন করতে পারছেন না (অ্যাক্সেস ডিনাইড ত্রুটি)

Ubuntu-এ, root ইউজার ডিফল্টভাবে unix_socket প্রমাণীকরণ ব্যবহার করে। তাই স্ট্যান্ডার্ড পাসওয়ার্ড-ভিত্তিক লগইন কাজ করবে না।

উদাহরণস্বরূপ লক্ষণ

mysql -u root -p

Access denied for user 'root'@'localhost'

সঠিক লগইন পদ্ধতি (Ubuntu ডিফল্ট)

sudo mysql

এটি সবচেয়ে নিরাপদ এবং সুপারিশকৃত পদ্ধতি।

কিভাবে root-কে পাসওয়ার্ড প্রমাণীকরণে পরিবর্তন করবেন (শুধুমাত্র প্রয়োজন হলে)

শুধুমাত্র তখনই প্রমাণীকরণ পদ্ধতি পরিবর্তন করুন যখন আপনাকে বাহ্যিক টুল বা অ্যাপ্লিকেশন থেকে root হিসেবে সংযোগ করতে হয়।

① MariaDB-তে সংযোগ করুন

sudo mysql

② প্রমাণীকরণ প্লাগইন পরিবর্তন করুন

ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'StrongPasswordHere';

FLUSH PRIVILEGES;

③ পরিবর্তন নিশ্চিত করুন

SELECT user, host, plugin FROM mysql.user;

যদি mysql_native_password প্রদর্শিত হয়, তবে পরিবর্তন সফল হয়েছে।

বর্তমান প্রমাণীকরণ পদ্ধতি কীভাবে পরীক্ষা করবেন

sudo mysql -e "SELECT user, host, plugin FROM mysql.user;"

প্রধান প্রমাণীকরণ পদ্ধতিগুলি:

  • unix_socket → Ubuntu ডিফল্ট, নিরাপদ
  • mysql_native_password → পাসওয়ার্ড-ভিত্তিক প্রমাণীকরণ

নির্দিষ্ট কোনো কারণ না থাকলে, root-কে unix_socket প্রমাণীকরণে রাখা সবচেয়ে নিরাপদ।

সাধারণ ত্রুটি এবং সমাধানসমূহ

ত্রুটি 1698 (28000): ব্যবহারকারী ‘root’@’localhost’ এর জন্য অ্যাক্সেস ডিনাইড

  • কারণ: পাসওয়ার্ড-ভিত্তিক লগইন করার চেষ্টা
  • সমাধান: sudo mysql ব্যবহার করে লগইন করুন

mysql_secure_installation পাওয়া যায়নি

  • which mysql_secure_installation দিয়ে পরীক্ষা করুন
  • যদি ইনস্টল না থাকে, চালান sudo apt install mariadb-server

utf8mb4-এ ক্যারেক্টার এনকোডিং সেট করুন (গারবেল টেক্সট প্রতিরোধ)

MariaDB-তে বহুভাষিক টেক্সট এবং ইমোজি নিরাপদে হ্যান্ডল করার জন্য utf8mb4 ব্যবহার করার সুপারিশ করা হয়। এই সেটিং না থাকলে, আপনি এনকোডিং সমস্যা বা ডেটা হারানোর সম্মুখীন হতে পারেন।

① কনফিগারেশন ফাইল সম্পাদনা করুন

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

[mysqld] সেকশনে নিম্নলিখিত লাইনগুলি যোগ বা পরিবর্তন করুন:

[mysqld]
character-set-server = utf8mb4
collation-server     = utf8mb4_general_ci

② MariaDB রিস্টার্ট করুন

sudo systemctl restart mariadb

③ সেটিংস যাচাই করুন

sudo mysql -e "SHOW VARIABLES LIKE 'character_set%';"

যদি utf8mb4 প্রদর্শিত হয়, তবে কনফিগারেশন সফল হয়েছে।

ডাটাবেস তৈরি করার সময় utf8mb4 নির্দিষ্ট করুন (প্রস্তাবিত)

গ্লোবাল সেটিংস যাই হোক না কেন, যদি আপনি ক্যারেক্টার সেট স্পষ্টভাবে নির্ধারণ করতে চান, ডাটাবেস তৈরি করার সময় তা নির্দিষ্ট করুন।

CREATE DATABASE sample_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

এই ডাটাবেসের মধ্যে তৈরি হওয়া সব টেবিল utf8mb4 উত্তরাধিকার পাবে।

একটি অ্যাপ্লিকেশন ইউজার তৈরি করুন এবং অনুমতি দিন

প্রোডাকশন পরিবেশে, অ্যাপ্লিকেশন সংযোগের জন্য কখনোই root ইউজার ব্যবহার করবেন না। একটি নিবেদিত ইউজার তৈরি করুন এবং শুধুমাত্র প্রয়োজনীয় ন্যূনতম অধিকারই দিন।

① MariaDB-এ লগইন করুন

sudo mysql

② ব্যবহারকারী তৈরি করুন (স্থানীয় সংযোগ)

CREATE USER 'app_user'@'localhost'
IDENTIFIED BY 'StrongPasswordHere';

③ ডাটাবেসের অধিকার প্রদান করুন

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'localhost';

FLUSH PRIVILEGES;

রিমোট অ্যাক্সেস ব্যবহারকারী তৈরি করুন (শুধুমাত্র প্রয়োজন হলে)

আপনি যদি বাহ্যিক সার্ভার বা ক্লাউড পরিবেশ থেকে সংযোগ করতে চান তবে কেবল তখনই এটি কনফিগার করুন।

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

নোট: “%” ওয়াইল্ডকার্ড যেকোন হোস্ট থেকে সংযোগের অনুমতি দেয়। প্রোডাকশন পরিবেশে নির্দিষ্ট IP ঠিকানা উল্লেখ করা নিরাপদ।

বর্তমান ব্যবহারকারী এবং অধিকার কীভাবে পরীক্ষা করবেন

SELECT user, host FROM mysql.user;

SHOW GRANTS FOR 'app_user'@'localhost';

সাধারণ অনুমতি ত্রুটি এবং সমাধান

ব্যবহারকারী ‘app_user’ এর জন্য প্রবেশাধিকার অস্বীকৃত

  • হোস্ট নির্দিষ্টকরণ ভুল (localhost এবং % এর পার্থক্য)
  • FLUSH PRIVILEGES চালানো হয়নি
  • সংযোগের সময় ডাটাবেসের নাম ভুল

অজানা ডাটাবেস

  • ডাটাবেসের নামের টাইপো
  • লক্ষ্য ডাটাবেসের জন্য কোনো অধিকার প্রদান করা হয়নি

MariaDB-এ রিমোট সংযোগ কীভাবে অনুমোদন করবেন (বাহ্যিক অ্যাক্সেস ব্যর্থ হলে সমাধান)

ডিফল্টভাবে, MariaDB শুধুমাত্র স্থানীয় সংযোগ অনুমোদন করে। যদি আপনি বাহ্যিক সার্ভার বা ক্লাউড পরিবেশ থেকে সংযোগ করতে চান, তবে নিম্নলিখিত সেটিংস কনফিগার করুন।

① bind-address পরিবর্তন করুন

কনফিগারেশন ফাইলটি সম্পাদনা করুন:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

নিম্নলিখিত লাইনটি খুঁজুন:

bind-address = 127.0.0.1

বাহ্যিক সংযোগের অনুমতি দিতে, এটিকে পরিবর্তন করুন:

bind-address = 0.0.0.0

সংরক্ষণ করার পরে, MariaDB রিস্টার্ট করুন:

sudo systemctl restart mariadb

② ফায়ারওয়ালে পোর্ট 3306 খুলুন

যদি আপনি উবুন্টুতে UFW ব্যবহার করেন:

sudo ufw allow 3306
sudo ufw reload

সুরক্ষা বাড়াতে, সোর্স IP ঠিকানা নির্দিষ্ট করুন:

sudo ufw allow from 192.168.1.10 to any port 3306

③ রিমোট অ্যাক্সেস ব্যবহারকারী তৈরি করুন

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

ভাল সুরক্ষার জন্য:

CREATE USER 'app_user'@'192.168.1.10'
IDENTIFIED BY 'StrongPasswordHere';

বাহ্যিকভাবে সংযোগ করতে না পারলে চেকলিস্ট

1. MariaDB চলছে কি?

sudo systemctl status mariadb

2. পোর্ট 3306 শোনাচ্ছে কি?

sudo ss -tulnp | grep 3306

যদি এটি 0.0.0.0:3306 দেখায়, তবে এটি সব ইন্টারফেসে সঠিকভাবে শোনাচ্ছে।

3. ক্লাউড পরিবেশ (AWS / GCP / VPS) ব্যবহার করলে

  • সিকিউরিটি গ্রুপে পোর্ট 3306 খোলা আছে নিশ্চিত করুন
  • নিশ্চিত করুন যে কোনো বাহ্যিক ফায়ারওয়াল সংযোগ ব্লক করছে না

4. ত্রুটি বার্তা দ্বারা সৃষ্ট কারণগুলো

MySQL সার্ভারে সংযোগ করা যাচ্ছে না

  • পোর্ট বন্ধ আছে
  • bind-address পরিবর্তন করা হয়নি
  • ফায়ারওয়াল সংযোগ ব্লক করছে

ব্যবহারকারীর জন্য প্রবেশাধিকার অস্বীকৃত

  • ব্যবহারকারী হোস্ট নির্দিষ্টকরণ ভুল
  • পাসওয়ার্ড ভুল
  • অধিকার প্রদান করা হয়নি

সংযোগের সময় শেষ হয়েছে

  • ক্লাউড-সাইড সিকিউরিটি সেটিংস
  • নেটওয়ার্ক রাউটিং সমস্যাগুলি

গুরুত্বপূর্ণ সিকিউরিটি নোট

  • প্রোডাকশন পরিবেশে “%” ব্যবহার এড়িয়ে চলুন
  • সম্ভব হলে VPN অ্যাক্সেস ব্যবহার করুন
  • SSL/TLS সংযোগ সক্রিয় করার কথা বিবেচনা করুন
  • রিমোট রুট লগইন কখনোই অনুমোদন করবেন না

MariaDB শুরু না হলে ট্রাবলশুটিং (ব্যর্থ ত্রুটি)

① সার্ভিসের অবস্থা পরীক্ষা করুন

sudo systemctl status mariadb

② বিস্তারিত লগ পরীক্ষা করুন

sudo journalctl -xe
sudo cat /var/log/mysql/error.log

③ সাধারণ কারণগুলো

  • কনফিগারেশন ফাইলের সিনট্যাক্স ত্রুটি
  • অপর্যাপ্ত ডিস্ক স্পেস
  • পোর্টের সংঘর্ষ (MySQL ইতিমধ্যে চলছে)

④ ডিস্ক স্পেস পরীক্ষা করুন

df -h

প্রবেশাধিকার অস্বীকৃত ত্রুটির কারণের সারাংশ

  • পাসওয়ার্ড ভুল
  • হোস্ট নির্দিষ্টকরণ ভুল (localhost এবং % এর পার্থক্য)
  • FLUSH PRIVILEGES চালানো হয়নি
  • রুটের জন্য স্ট্যান্ডার্ড লগইন করার চেষ্টা (প্রয়োজন sudo mysql )

মৌলিক পারফরম্যান্স উন্নতি (শুরু করার জন্য)

Advanced tuning is not required, but at minimum, confirm the following settings.

① ধীর কুয়েরি লগ সক্রিয় করুন

50-server.cnf-এ নিম্নলিখিতটি যোগ করুন:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

MariaDB পুনরায় চালু করুন:

sudo systemctl restart mariadb

② ইনডেক্স ব্যবহার পরীক্ষা করুন

ধীর কুয়েরিগুলিতে সঠিক ইনডেক্স না থাকতে পারে।

EXPLAIN SELECT * FROM sample_table WHERE column_name = 'value';

③ সার্ভার রিসোর্স পরীক্ষা করুন

top
htop

মেমোরি অপর্যাপ্ত হলে, আপনার সার্ভার প্ল্যান আপগ্রেড করার কথা বিবেচনা করুন।

প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)

Ubuntu 22.04-এ কীভাবে MariaDB সংস্করণ লক করা যায়?

apt-mark hold mariadb-server ব্যবহার করুন।

রুট পাসওয়ার্ড ভুলে গেলে কীভাবে রিসেট করব?

আপনি সেফ মোডে শুরু করে এবং পাসওয়ার্ড পুনরায় কনফিগার করে এটি রিসেট করতে পারেন। বিস্তারিত ধাপের জন্য আমাদের নিবেদিত গাইড দেখুন।

MariaDB পোর্ট নম্বর কীভাবে পরিবর্তন করবেন?

50-server.cnf-এ port = 3307 এর মতো কিছু পরিবর্তন করুন, তারপর সার্ভিসটি পুনরায় চালু করুন।

উপসংহার: Ubuntu-এ নিরাপদে MariaDB ব্যবহার

  • ডিফল্ট রেপোজিটরি সংস্করণ ব্যবহার করা সবচেয়ে নিরাপদ বিকল্প
  • সর্বদা mysql_secure_installation চালান
  • অ্যাপ্লিকেশন সংযোগের জন্য কখনোই রুট ব্যবহার করবেন না
  • প্রয়োজন হলে শুধুমাত্র রিমোট অ্যাক্সেস সক্রিয় করুন
  • সমস্যার সমাধানে, লগ চেক করা সর্বোচ্চ অগ্রাধিকার

এই ধাপগুলি অনুসরণ করে, আপনি Ubuntu-এ একটি নিরাপদ এবং প্রোডাকশন-রেডি MariaDB পরিবেশ তৈরি করতে পারেন।