MySQL اور MariaDB: انسٹالیشن اور آپ کا پہلا ڈیٹابیس
VDS پر ڈیٹابیس سرور انسٹال کرنا، محفوظ ابتدائی سیٹ اپ، ڈیٹابیس اور صارف بنانا، کنکشن کی جانچ، اور عام ابتدائی خرابیاں۔
اپ ڈیٹ 23 اگست، 2026
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 لاگ ان بند کرنے اور ٹیسٹ ڈیٹا بیس ڈراپ کرنے کو کہے گا۔ ہر سوال کا جواب ”yes“ دیں۔
ڈیٹا بیس اور صارف
اپنی ایپلیکیشن 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 ڈسک تیز ہے، مگر صرف ایک ہے۔