התקנה ועבודה בטרמינל (MySQL)
מדריך מקיף לעבודה עם MySQL דרך שורת הפקודה (Terminal/CMD), כולל Docker, התקנה מקומית ופקודות בסיסיות.
תוכן עניינים
- התחברות ל-MySQL - סקירה כללית
- עבודה עם Docker
- עבודה עם MySQL מקומי
- פקודות MySQL בסיסיות
- פקודות מתקדמות
- טיפים ופתרון בעיות
שיטות התחברות ל-MySQL
ישנן שלוש דרכים עיקריות להתחבר ל-MySQL:
| שיטה | מתי להשתמש | יתרונות |
|---|---|---|
| Docker | סביבת פיתוח מבודדת | קל להתקנה, לא משבש את המערכת |
| התקנה מקומית | שימוש קבוע, פרודקשן | מהיר יותר, גישה ישירה |
| MySQL Workbench | ממשק גרפי | קל למתחילים, ויזואלי |
במדריך זה נתמקד בשורת הפקודה (Terminal/CMD).
עבודה עם Docker
למה Docker?
Docker מאפשר להריץ MySQL בסביבה מבודדת (Container) ללא התקנה מלאה על המחשב.
יתרונות: - התקנה מהירה - קל לנקות (מחיקת Container) - לא משפיע על המערכת - אותה סביבה בכל מחשב
התקנה ראשונית - פעם אחת בלבד!
שלב 1: התקנת Docker Desktop
Windows/Mac: 1. הורידו מ-docker.com 2. התקן והפעל את Docker Desktop 3. ודאו ש-Docker Desktop רץ (סמל לוויתן במגש המערכת)
Linux:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker.io
# התחל את Docker
sudo systemctl start docker
sudo systemctl enable docker
שלב 2: יצירת MySQL Container
פקודה ליצירת Container חדש:
docker run --name mysql-docker \
-e MYSQL_ROOT_PASSWORD=YourPassword123! \
-p 3306:3306 \
-d mysql:latest
הסבר על הפקודה:
| חלק | משמעות |
|---|---|
docker run |
יוצר ומריץ Container חדש |
--name mysql-docker |
שם ה-Container (אפשר לבחור כל שם) |
-e MYSQL_ROOT_PASSWORD=... |
הגדרת סיסמה למשתמש root |
-p 3306:3306 |
מיפוי פורט (3306 = פורט MySQL) |
-d |
הרצה ברקע (Detached mode) |
mysql:latest |
תמונת MySQL העדכנית ביותר |
שימו לב: פקודה זו רק פעם אחת! ה-Container ייצור ויישאר קיים.
פקודות Docker יומיומיות
בדיקת סטטוס Containers
# הצגת Containers פעילים
docker ps
# הצגת כל ה-Containers (כולל כבויים)
docker ps -a
פלט לדוגמה:
CONTAINER ID IMAGE STATUS PORTS NAMES
abc123def456 mysql:latest Up 10 minutes 0.0.0.0:3306->3306/tcp mysql-docker
הסבר:
- STATUS: Up = Container פועל
- STATUS: Exited = Container כבוי
הפעלת Container
# הפעלת Container שכבוי
docker start mysql-docker
מתי להשתמש: - אחרי אתחול מחדש של המחשב - אחרי שעצרת את ה-Container
עצירת Container
# עצירת Container פעיל
docker stop mysql-docker
מתי להשתמש: - כשסיימת לעבוד - לפני כיבוי המחשב (אופציונלי)
כניסה ל-MySQL דרך Docker
הפקודה המלאה:
docker exec -it mysql-docker mysql -u root -p
הסבר:
- docker exec - הריצו פקודה בתוך Container פעיל
- -it - מצב אינטראקטיבי (Interactive Terminal)
- mysql-docker - שם ה-Container
- mysql - הפקודה להפעלת MySQL CLI
- -u root - התחבר כמשתמש root
- -p - יבקש סיסמה (מקלידים אותה בשורה הבאה)
אלטרנטיבה (עם הסיסמה בפקודה):
docker exec -it mysql-docker mysql -u root -pYourPassword123!
⚠️ אזהרה: הסיסמה תופיע בהיסטוריית הטרמינל!
צפייה ב-Logs
# הצגת לוגים של ה-Container
docker logs mysql-docker
# הצגת לוגים בזמן אמת
docker logs -f mysql-docker
שימושי לאיתור בעיות!
מחיקת Container (זהירות!)
# עצירה ומחיקה מלאה
docker stop mysql-docker
docker rm mysql-docker
⚠️ אזהרה: כל הנתונים ב-Container יימחקו!
לשמירת נתונים, השתמשו ב-Volumes:
docker run --name mysql-docker \
-e MYSQL_ROOT_PASSWORD=YourPassword123! \
-p 3306:3306 \
-v mysql-data:/var/lib/mysql \
-d mysql:latest
סדר פעולות מלא ב-Docker
תהליך עבודה יומיומי:
# 1. וודא ש-Docker Desktop פועל (Windows/Mac)
# 2. בדוק אם ה-Container קיים
docker ps -a
# 3. הפעל את ה-Container אם הוא כבוי
docker start mysql-docker
# 4. בדוק שהוא רץ
docker ps
# 5. התחבר ל-MySQL
docker exec -it mysql-docker mysql -u root -p
# הזן סיסמה: YourPassword123!
# 6. עבוד עם SQL
mysql> SHOW DATABASES;
mysql> USE my_database;
mysql> SELECT * FROM users;
# 7. צא מ-MySQL
mysql> EXIT;
# 8. (אופציונלי) עצור את ה-Container
docker stop mysql-docker
עבודה עם MySQL מקומי
התקנה מקומית של MySQL
Windows
- הורידו את MySQL Community Server:
- היכנסו ל-dev.mysql.com/downloads
- בחרו את הגרסה ל-Windows
-
הורידו ה-Installer
-
התקן:
- הריצו את ה-Installer
- בחרו "Developer Default" או "Server Only"
- הגדירו סיסמה ל-root
-
השאר את כל ההגדרות כברירת מחדל
-
בדיקה:
mysql --version
macOS
דרך Homebrew (מומלץ):
# התקנת Homebrew (אם אין)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# התקנת MySQL
brew install mysql
# הפעלת MySQL
brew services start mysql
# הגדרת אבטחה ראשונית
mysql_secure_installation
Linux (Ubuntu/Debian)
# עדכון מאגר חבילות
sudo apt update
# התקנת MySQL Server
sudo apt install mysql-server
# הפעלת MySQL
sudo systemctl start mysql
sudo systemctl enable mysql
# הגדרת אבטחה
sudo mysql_secure_installation
התחברות ל-MySQL מקומי
פקודת התחברות בסיסית:
mysql -u root -p
הסבר:
- mysql - פקודת MySQL CLI
- -u root - שם משתמש (root = מנהל)
- -p - תבקש סיסמה
אחרי הזנת הסיסמה תראו:
Welcome to the MySQL monitor.
mysql>
התחברות למסד נתונים ספציפי:
mysql -u root -p database_name
התחברות כמשתמש אחר:
mysql -u username -p
התחברות לשרת מרוחק:
mysql -h hostname -u username -p
# דוגמה:
mysql -h 192.168.1.100 -u admin -p
פקודות MySQL בסיסיות
ניהול מסדי נתונים
הצגת כל מסדי הנתונים
SHOW DATABASES;
פלט לדוגמה:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| shop_db |
| test_db |
+--------------------+
יצירת מסד נתונים חדש
CREATE DATABASE my_database;
עם קידוד עברית:
CREATE DATABASE my_database
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
מחיקת מסד נתונים
DROP DATABASE my_database;
⚠️ אזהרה: פעולה בלתי הפיכה! כל הנתונים יימחקו.
גרסה בטוחה יותר:
DROP DATABASE IF EXISTS my_database;
בחירת מסד נתונים לעבודה
USE my_database;
פלט:
Database changed
מעתה, כל הפקודות יבוצעו על my_database
בדיקת מסד הנתונים הפעיל כרגע
SELECT DATABASE();
פלט:
+-------------+
| DATABASE() |
+-------------+
| my_database |
+-------------+
ניהול טבלאות
הצגת כל הטבלאות
SHOW TABLES;
פלט לדוגמה:
+----------------------+
| Tables_in_my_database|
+----------------------+
| users |
| products |
| orders |
+----------------------+
הצגת מבנה טבלה
DESCRIBE table_name;
או בקיצור:
DESC table_name;
פלט לדוגמה:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| email | varchar(255) | NO | UNI | NULL | |
| created_at | timestamp | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
הצגת פקודת CREATE של טבלה
SHOW CREATE TABLE table_name;
שימושי להעתקת מבנה טבלה!
הצגת עמודות בטבלה
SHOW COLUMNS FROM table_name;
זהה ל-DESCRIBE
יציאה מ-MySQL
EXIT;
או:
QUIT;
או: לחצו Ctrl + D (Linux/Mac) / Ctrl + Z ואז Enter (Windows)
פקודות מתקדמות
הצגת משתמשים
SELECT User, Host FROM mysql.user;
פלט לדוגמה:
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| app_user | localhost |
| readonly_user | % |
+------------------+-----------+
הצגת משתנה מערכת
SHOW VARIABLES LIKE 'variable_name';
דוגמאות:
-- הצגת גרסת MySQL
SELECT VERSION();
-- הצגת קידוד תווים
SHOW VARIABLES LIKE 'character_set%';
-- הצגת מיקום קבצי MySQL
SHOW VARIABLES LIKE 'datadir';
-- הצגת פורט
SHOW VARIABLES LIKE 'port';
הצגת פרוצסים פעילים
SHOW PROCESSLIST;
שימושי לאיתור שאילתות איטיות!
הצגת סטטוס MySQL
STATUS;
פלט לדוגמה:
--------------
mysql Ver 8.0.35 for Linux on x86_64
Connection id: 10
Current database: shop_db
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.35 MySQL Community Server
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 2 hours 15 min 32 sec
--------------
הצגת אינדקסים
SHOW INDEX FROM table_name;
הצגת הרשאות משתמש
SHOW GRANTS FOR 'username'@'localhost';
דוגמה:
SHOW GRANTS FOR 'root'@'localhost';
ניקוי מסך
\c
או:
# מחוץ ל-MySQL (בטרמינל)
clear # Linux/Mac
cls # Windows
הרצת SQL מקובץ
מחוץ ל-MySQL:
mysql -u root -p database_name < file.sql
בתוך MySQL:
SOURCE /path/to/file.sql;
דוגמה:
SOURCE C:/backups/shop_db_backup.sql;
ייצוא תוצאות לקובץ
SELECT * FROM users
INTO OUTFILE '/tmp/users.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
⚠️ שימו לב: דורש הרשאות FILE.
טיפים ופתרון בעיות
קיצורי דרך שימושיים
| מקש | פעולה |
|---|---|
↑ / ↓ |
גלילה בהיסטוריית פקודות |
Tab |
השלמה אוטומטית של שמות |
Ctrl + L |
ניקוי מסך (Linux/Mac) |
Ctrl + C |
ביטול פקודה נוכחית |
Ctrl + D |
יציאה מ-MySQL (Linux/Mac) |
פתרון בעיות נפוצות
"Access denied for user 'root'@'localhost'"
פתרון 1: ודאו שהסיסמה נכונה
mysql -u root -p
# הזן את הסיסמה בזהירות
פתרון 2: אפס סיסמה (Docker)
docker exec -it mysql-docker mysql --skip-password
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
mysql> FLUSH PRIVILEGES;
"ERROR 2002: Can't connect to local MySQL server"
בדיקה 1: האם MySQL פועל?
# Docker
docker ps
# מקומי (Linux)
sudo systemctl status mysql
# מקומי (Mac)
brew services list
פתרון:
# Docker
docker start mysql-docker
# מקומי (Linux)
sudo systemctl start mysql
# מקומי (Mac)
brew services start mysql
"ERROR 1045: Access denied"
הסיבה: סיסמה שגויה או משתמש לא קיים.
פתרון:
# נסה עם משתמש אחר
mysql -u root -p
# בדוק משתמשים קיימים
SELECT User, Host FROM mysql.user;
"ERROR 1049: Unknown database"
הסיבה: מסד הנתונים לא קיים.
פתרון:
-- הצג מסדי נתונים קיימים
SHOW DATABASES;
-- צור מסד נתונים חדש
CREATE DATABASE my_database;
"ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)"
הסיבה: MySQL לא פועל או לא מאזין על הפורט הנכון.
בדיקה:
# בדוק פורט (Windows)
netstat -ano | findstr :3306
# בדוק פורט (Linux/Mac)
netstat -tuln | grep 3306
טיפים לעבודה יעילה
1. שמירת היסטוריה
MySQL שומר היסטוריית פקודות ב:
- Linux/Mac: ~/.mysql_history
- Windows: %USERPROFILE%\.mysql_history
מחיקת היסטוריה (אבטחה):
rm ~/.mysql_history
2. קובץ תצורה אישי
צרו קובץ: ~/.my.cnf (Linux/Mac) או my.ini (Windows)
[client]
user=root
password=YourPassword123!
host=localhost
כעת תוכלו להתחבר ללא הזנת פרטים:
mysql
⚠️ אבטחה: הקובץ חייב להיות מוגן!
chmod 600 ~/.my.cnf
3. Aliases שימושיים
הוסיפו ל-.bashrc או .zshrc:
# התחברות מהירה
alias mysql-local='mysql -u root -p'
alias mysql-docker='docker exec -it mysql-docker mysql -u root -p'
# Docker shortcuts
alias mysql-start='docker start mysql-docker'
alias mysql-stop='docker stop mysql-docker'
alias mysql-logs='docker logs -f mysql-docker'
הפעילו מחדש את הטרמינל או:
source ~/.bashrc
כעת:
mysql-start # הפעלת Docker
mysql-docker # כניסה ל-MySQL
4. שימוש ב-Pager
-- הפעלת pager (less)
pager less;
-- הצגת טבלה גדולה
SELECT * FROM large_table;
-- כיבוי pager
nopager;
5. פורמט פלט אנכי
-- הוסף \G בסוף השאילתה
SELECT * FROM users WHERE id = 1\G
פלט:
*************************** 1. row ***************************
id: 1
name: ישראל ישראלי
email: [email protected]
created_at: 2026-01-04 10:30:00
שימושי לשורות עם הרבה עמודות!
סיכום פקודות מהירות
Docker
docker start mysql-docker # הפעלה
docker stop mysql-docker # עצירה
docker ps # בדיקת סטטוס
docker exec -it mysql-docker mysql -u root -p # כניסה
docker logs mysql-docker # צפייה בלוגים
MySQL מקומי
mysql -u root -p # התחברות
mysql -u root -p database_name # התחברות למסד ספציפי
mysql -h hostname -u username -p # חיבור מרוחק
בתוך MySQL
-- ניהול מסדי נתונים
SHOW DATABASES;
CREATE DATABASE db_name;
USE db_name;
DROP DATABASE db_name;
-- ניהול טבלאות
SHOW TABLES;
DESCRIBE table_name;
SHOW CREATE TABLE table_name;
-- מידע מערכת
SELECT VERSION();
SELECT DATABASE();
STATUS;
SHOW PROCESSLIST;
-- יציאה
EXIT;
תרגילים מעשיים
תרגיל 1: הקמת סביבת עבודה
# 1. הפעל MySQL (Docker או מקומי)
docker start mysql-docker
# 2. התחבר
docker exec -it mysql-docker mysql -u root -p
# 3. צור מסד נתונים
mysql> CREATE DATABASE practice_db;
# 4. עבור למסד
mysql> USE practice_db;
# 5. בדוק שאתה במסד הנכון
mysql> SELECT DATABASE();
# 6. צא
mysql> EXIT;
תרגיל 2: בדיקת מערכת
-- 1. גרסת MySQL
SELECT VERSION();
-- 2. משתמש נוכחי
SELECT USER();
-- 3. מסד נוכחי
SELECT DATABASE();
-- 4. זמן פעילות השרת
SHOW STATUS LIKE 'Uptime';
-- 5. קידוד תווים
SHOW VARIABLES LIKE 'character_set_database';
קישורים שימושיים
- תיעוד רשמי MySQL: dev.mysql.com/doc
- Docker Hub - MySQL: hub.docker.com/_/mysql
- MySQL Workbench: dev.mysql.com/downloads/workbench
המשך לרקע והיסטוריה → | חזרה למדריך הראשי
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה היתרון בהרצת MySQL ב-Docker?
הצגת התשובה
תשובה ג. Container אחד עם מסד מוכן, ו-Volume שומר את הנתונים.
-
מה עושה הדגל
-pב-mysql -u root -p?הצגת התשובה
תשובה ג. כך הסיסמה לא נכתבת גלויה בפקודה.