Skip to content
VDS · ڈیٹا بیس

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 ڈسک تیز ہے، مگر صرف ایک ہے۔