O'rnatish — Windows, Mac, Linux, Docker bilan

~15 daq · MySQL · Kirish va O'rnatish

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

  1. https://dev.mysql.com/downloads/installer/ dan MySQL Installer ni yuklab oling
  2. "Server only" yoki "Custom" ni tanlang: MySQL Server 8.4 va MySQL Workbench
  3. 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
  4. 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