O'rnatish — Windows, Mac, Linux, Docker bilan
Muammodan boshlaylik
MySQL — server dastur. U kompyuteringizda doimiy ishlab turishi kerak. O'rnatishning bir necha yo'li bor va har birining o'z afzalligi bor. Bu darsda to'rtta usulni ko'ramiz — o'zingizga qulayini tanlang.
Tavsiya:
- Faqat o'rganish uchun, tez boshlash → Docker (agar o'rnatilgan bo'lsa) yoki rasmiy o'rnatuvchi
- PHP bilan birga → Laragon (Windows) yoki XAMPP
- Server (production) → Linux paket menejeri
1. Windows — rasmiy o'rnatuvchi
- https://dev.mysql.com/downloads/installer/ dan MySQL Installer ni yuklab oling
- "Server only" yoki "Custom" ni tanlang: MySQL Server 8.4 va MySQL Workbench
- Konfiguratsiya:
- Config Type: Development Computer
- Port: 3306 (standart)
- Authentication: Strong Password Encryption (tavsiya etilgan)
- root parolini kiriting va eslab qoling
- "Configure MySQL Server as a Windows Service" — belgilangan qoldiring
- Tugatish
Terminalda (PowerShell) tekshirish:
mysql --version
mysql topilmasa — C:\Program Files\MySQL\MySQL Server 8.4\bin papkasini PATH ga qo'shing.
Laragon / XAMPP
PHP bilan ishlasangiz — bitta paketda PHP + MySQL (yoki MariaDB) + veb-server. Laragon da "Start All" tugmasi, root paroli bo'sh. O'rganish uchun qulay, lekin serverda bunday qilmang.
2. macOS — Homebrew
brew install mysql
brew services start mysql # har safar kompyuter yonganda avtomatik ishga tushadi
mysql_secure_installation # root parol va xavfsizlik sozlamalari
mysql_secure_installation bir nechta savol beradi:
- Parol tekshiruv komponenti — ixtiyoriy
- root parol — o'rnating
- Anonim foydalanuvchilarni o'chirish — Ha
- root ga masofadan kirishni taqiqlash — Ha
- test bazasini o'chirish — Ha
3. Linux (Ubuntu / Debian)
sudo apt update
sudo apt install mysql-server
sudo systemctl status mysql # ishlayaptimi?
sudo mysql_secure_installation
Ubuntu da root foydalanuvchi standart holatda parol bilan emas, tizim foydalanuvchisi orqali kiradi:
sudo mysql
O'zingiz uchun alohida foydalanuvchi yaratish (tavsiya etiladi — root bilan kundalik ishlamang):
CREATE USER 'dilshod'@'localhost' IDENTIFIED BY 'kuchli_parol';
GRANT ALL PRIVILEGES ON *.* TO 'dilshod'@'localhost' WITH GRANT OPTION;
Foydalanuvchi va huquqlar 50-darsda batafsil.
4. Docker — eng toza usul
Docker o'rnatilgan bo'lsa, MySQL ni kompyuterga hech narsa "sochmasdan" bir buyruqda ishga tushirish mumkin:
docker run -d \
--name mysql-dars \
-e MYSQL_ROOT_PASSWORD=root123 \
-e MYSQL_DATABASE=dokon \
-p 3306:3306 \
-v mysql-data:/var/lib/mysql \
mysql:8.4
| Parametr | Ma'nosi |
|---|---|
-d |
Orqa fonda ishlash |
--name mysql-dars |
Konteyner nomi |
-e MYSQL_ROOT_PASSWORD |
root paroli |
-e MYSQL_DATABASE=dokon |
Avtomatik yaratiladigan baza |
-p 3306:3306 |
Kompyuterning 3306 porti → konteynerning 3306 porti |
-v mysql-data:/var/lib/mysql |
Ma'lumotlar konteyner o'chirilsa ham saqlanadi |
mysql:8.4 |
MySQL 8.4 LTS rasmi |
Ichiga kirish:
docker exec -it mysql-dars mysql -u root -p
To'xtatish va qayta ishga tushirish:
docker stop mysql-dars
docker start mysql-dars
docker-compose bilan
Loyihada docker-compose.yml:
services:
mysql:
image: mysql:8.4
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: dokon
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
docker compose up -d
Hamkasbingiz loyihani klonlab, xuddi shu buyruq bilan aynan bir xil MySQL ni oladi.
[!TIP] Docker ning eng katta afzalligi — turli loyihalar uchun turli MySQL versiyalarini bir vaqtda ishga tushirish mumkin (portlarni farqlab:
3307:3306). Va kompyuterni "iflos" qilmaydi: konteynerni o'chirdingiz — MySQL yo'q.
Ulanib tekshirish
mysql -u root -p
Parolni kiritgach:
Welcome to the MySQL monitor. Commands end with ; or \g.
Server version: 8.4.3 MySQL Community Server - GPL
mysql>
Birinchi so'rovlar:
SELECT VERSION();
SHOW DATABASES;
SELECT NOW();
Chiqish: exit yoki \q.
MySQL yoki MariaDB?
XAMPP, Laragon va ko'p Linux distributivlari MySQL o'rniga MariaDB o'rnatadi. Bu kursdagi deyarli barcha misollar ikkalasida ham ishlaydi. Farqlar faqat ilg'or mavzularda uchraydi (ba'zi JSON funksiyalari, ayrim optimizatsiyalar) — ular kerakli joyda ko'rsatiladi.
Qaysi biri o'rnatilganini bilish:
SELECT VERSION();
-- 8.4.3 ← MySQL
-- 11.4.2-MariaDB ← MariaDB
Nima uchun shunday?
Nima uchun MySQL alohida server sifatida ishlaydi, SQLite kabi oddiy fayl emas?
Chunki veb-saytga bir vaqtda yuzlab foydalanuvchi so'rov yuboradi. Agar har bir so'rov to'g'ridan-to'g'ri faylni ochib yozsa — ular bir-birining ishini buzadi. Server esa yagona "darvozabon": barcha so'rovlarni qabul qiladi, navbatga qo'yadi, qulflarni boshqaradi, xotirada keshlaydi. Bundan tashqari, server boshqa kompyuterda bo'lishi mumkin — ilova bitta serverda, baza boshqa, kuchliroq serverda.
Tez-tez uchraydigan muammolar
Can't connect to MySQL server on 'localhost' (10061) — server ishlamayapti. Windows: Services → MySQL84 → Start. Linux: sudo systemctl start mysql.
Access denied for user 'root'@'localhost' — parol noto'g'ri. Ubuntu da sudo mysql bilan kiring.
Port 3306 is already in use — boshqa MySQL (masalan, XAMPP niki) allaqachon ishlayapti. Uni to'xtating yoki boshqa port ishlating.
Xulosa
Eslab qoling:
- Windows: MySQL Installer yoki Laragon/XAMPP
- macOS:
brew install mysql+mysql_secure_installation - Linux:
apt install mysql-server, kirish —sudo mysql - Docker:
docker run ... mysql:8.4— eng toza va takrorlanadigan usul - Standart port — 3306
mysql -u root -p— ulanish;SELECT VERSION();— tekshirish
Keyingi dars
3-dars: MySQL Workbench va CLI — asosiy ishlatish