Πώς να εκτελέσετε ερωτήματα MySQL από τη γραμμή εντολών του Linux
Αν είστε υπεύθυνος για τη διαχείριση ενός διακομιστή βάσης δεδομένων, κατά καιρούς μπορεί να χρειαστεί να εκτελέσετε ένα ερώτημα και να το εξετάσετε προσεκτικά. Ενώ μπορείτε να το κάνετε από το κέλυφος MySQL/MariaDB, αυτή η συμβουλή θα σας επιτρέψει να εκτελέσετε τα ερωτήματα MySQL/MariaDB απευθείας χρησιμοποιώντας τη γραμμή εντολών του Linux ΚΑΙ να αποθηκεύσετε τα αποτελέσματα σε ένα αρχείο για μετέπειτα εξέταση (αυτό είναι ιδιαίτερα χρήσιμο αν το ερώτημα επιστρέφει πολλά αρχεία).
Ας δούμε μερικά απλά παραδείγματα εκτέλεσης MYSQL ερωτημάτων απευθείας από τη γραμμή εντολών πριν προχωρήσουμε σε ένα πιο προηγμένο ερώτημα.
Ρύθμιση Παραδειγματικών Βάσεων Δεδομένων
Πριν βουτήξουμε στις εντολές, ας δημιουργήσουμε τις παραδειγματικές βάσεις δεδομένων με τις οποίες θα δουλεύουμε σε όλο αυτόν τον οδηγό, ώστε να μπορείτε να ακολουθήσετε και να εξασκηθείτε σε αυτές τις τεχνικές στο δικό σας σύστημα.
Δημιουργία της βάσης δεδομένων tecmintdb
Πρώτα, ας δημιουργήσουμε τη βάση δεδομένων tecmintdb και τον πίνακα tutorials:
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS tecmintdb;"
Στη συνέχεια, για να δημιουργήσετε έναν πίνακα βάσης δεδομένων με όνομα tutorials στη βάση δεδομένων tecmintdb, εκτελέστε την παρακάτω εντολή:
sudo mysql -u root -p tecmintdb << 'EOF'
CREATE TABLE IF NOT EXISTS tutorials (
tut_id INT NOT NULL AUTO_INCREMENT,
tut_title VARCHAR(100) NOT NULL,
tut_author VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY (tut_id)
);
INSERT INTO tutorials (tut_title, tut_author, submission_date) VALUES
('Getting Started with Linux', 'John Smith', '2024-01-15'),
('Advanced Bash Scripting', 'Sarah Johnson', '2024-02-20'),
('MySQL Database Administration', 'Mike Williams', '2024-03-10'),
('Apache Web Server Configuration', 'Emily Brown', '2024-04-05'),
('Python for System Administrators', 'David Lee', '2024-05-12'),
('Docker Container Basics', 'Lisa Anderson', '2024-06-18'),
('Kubernetes Orchestration', 'Robert Taylor', '2024-07-22'),
('Linux Security Hardening', 'Jennifer Martinez', '2024-08-30');
EOF
Ελέγξτε εάν τα δεδομένα εισήχθησαν:
sudo mysql -u root -p -e "USE tecmintdb; SELECT * FROM tutorials;"
Δημιουργία της Βάσης Δεδομένων Υπαλλήλων
Τώρα, ας δημιουργήσουμε μια πιο σύνθετη βάση δεδομένων employees με πολλούς σχετιζόμενους πίνακες, αυτή είναι η βάση δεδομένων που θα χρησιμοποιήσουμε για τα πιο προχωρημένα παραδείγματα ερωτημάτων:
sudo mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS employees;"
Δημιουργήστε τον πίνακα employees:
sudo mysql -u root -p employees << 'EOF'
CREATE TABLE IF NOT EXISTS employees (
emp_no INT NOT NULL AUTO_INCREMENT,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
);
INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES
(10001, '1953-09-02', 'Georgi', 'Facello', 'M', '1984-06-02'),
(10002, '1964-06-02', 'Bezalel', 'Simmel', 'F', '1984-11-21'),
(10003, '1959-12-03', 'Parto', 'Bamford', 'M', '1984-08-28'),
(10004, '1954-05-01', 'Chirstian', 'Koblick', 'M', '1984-12-01'),
(10005, '1955-01-21', 'Kyoichi', 'Maliniak', 'M', '1984-09-15'),
(10006, '1953-04-20', 'Anneke', 'Preusig', 'F', '1985-02-18'),
(10007, '1957-05-23', 'Tzvetan', 'Zielinski', 'F', '1985-03-20'),
(10008, '1958-02-19', 'Saniya', 'Kalloufi', 'M', '1984-07-11'),
(10009, '1952-04-19', 'Sumant', 'Peac', 'F', '1985-02-18'),
(10010, '1963-06-01', 'Duangkaew', 'Piveteau', 'F', '1984-08-24');
EOF
Δημιουργήστε τον πίνακα salaries:
sudo mysql -u root -p employees << 'EOF'
CREATE TABLE IF NOT EXISTS salaries (
emp_no INT NOT NULL,
salary INT NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
PRIMARY KEY (emp_no, from_date),
FOREIGN KEY (emp_no) REFERENCES employees(emp_no) ON DELETE CASCADE
);
INSERT INTO salaries (emp_no, salary, from_date, to_date) VALUES
(10001, 60117, '1984-06-02', '1985-06-02'),
(10001, 62102, '1985-06-02', '1986-06-02'),
(10001, 66074, '1986-06-02', '9999-01-01'),
(10002, 65828, '1984-11-21', '1985-11-21'),
(10002, 65909, '1985-11-21', '9999-01-01'),
(10003, 40006, '1984-08-28', '1985-08-28'),
(10003, 43616, '1985-08-28', '9999-01-01'),
(10004, 40054, '1984-12-01', '1985-12-01'),
(10004, 42283, '1985-12-01', '9999-01-01'),
(10005, 78228, '1984-09-15', '1985-09-15'),
(10005, 82507, '1985-09-15', '9999-01-01'),
(10006, 40000, '1985-02-18', '1986-02-18'),
(10006, 43548, '1986-02-18', '9999-01-01'),
(10007, 56724, '1985-03-20', '1986-03-20'),
(10007, 60605, '1986-03-20', '9999-01-01'),
(10008, 46671, '1984-07-11', '1985-07-11'),
(10008, 48584, '1985-07-11', '9999-01-01'),
(10009, 60929, '1985-02-18', '1986-02-18'),
(10009, 64604, '1986-02-18', '9999-01-01'),
(10010, 72488, '1984-08-24', '1985-08-24'),
(10010, 74057, '1985-08-24', '9999-01-01');
EOF
Δημιουργήστε τον πίνακα departments για πιο σύνθετες ενώσεις:
sudo mysql -u root -p employees << 'EOF'
CREATE TABLE IF NOT EXISTS departments (
dept_no CHAR(4) NOT NULL,
dept_name VARCHAR(40) NOT NULL,
PRIMARY KEY (dept_no),
UNIQUE KEY (dept_name)
);
INSERT INTO departments (dept_no, dept_name) VALUES
('d001', 'Marketing'),
('d002', 'Finance'),
('d003', 'Human Resources'),
('d004', 'Production'),
('d005', 'Development'),
('d006', 'Quality Management');
EOF
Δημιουργήστε τον πίνακα dept_emp για να συνδέσετε τους employees με τα departments:
sudo mysql -u root -p employees << 'EOF'
CREATE TABLE IF NOT EXISTS dept_emp (
emp_no INT NOT NULL,
dept_no CHAR(4) NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
PRIMARY KEY (emp_no, dept_no),
FOREIGN KEY (emp_no) REFERENCES employees(emp_no) ON DELETE CASCADE,
FOREIGN KEY (dept_no) REFERENCES departments(dept_no) ON DELETE CASCADE
);
INSERT INTO dept_emp (emp_no, dept_no, from_date, to_date) VALUES
(10001, 'd005', '1984-06-02', '9999-01-01'),
(10002, 'd005', '1984-11-21', '9999-01-01'),
(10003, 'd004', '1984-08-28', '9999-01-01'),
(10004, 'd004', '1984-12-01', '9999-01-01'),
(10005, 'd003', '1984-09-15', '9999-01-01'),
(10006, 'd005', '1985-02-18', '9999-01-01'),
(10007, 'd004', '1985-03-20', '9999-01-01'),
(10008, 'd005', '1984-07-11', '9999-01-01'),
(10009, 'd006', '1985-02-18', '9999-01-01'),
(10010, 'd006', '1984-08-24', '9999-01-01');
EOF
Ελέγξτε ότι όλα έχουν ρυθμιστεί σωστά:
sudo mysql -u root -p -e "USE employees; SHOW TABLES;"
Τώρα έχετε ρυθμίσει και τις δύο βάσεις δεδομένων με δείγματα δεδομένων, και μπορείτε να ακολουθήσετε όλα τα παραδείγματα σε αυτόν τον οδηγό. Η βάση δεδομένων tecmintdb είναι ιδανική για απλές ερωτήσεις, ενώ η βάση δεδομένων employees σας επιτρέπει να εξασκηθείτε σε πιο σύνθετες λειτουργίες όπως οι συνενώσεις και οι συγκεντρώσεις.
Βασική Εκτέλεση Ερωτήματος
Για να δείτε όλες τις βάσεις δεδομένων στον διακομιστή σας, μπορείτε να εκτελέσετε την ακόλουθη εντολή:
sudo mysql -u root -p -e "show databases;"
Στη συνέχεια, για να δημιουργήσετε έναν πίνακα βάσης δεδομένων με όνομα tutorials στη βάση δεδομένων tecmintdb, εκτελέστε την παρακάτω εντολή:
sudo mysql -u root -p -e "USE tecmintdb; CREATE TABLE tutorials(tut_id INT NOT NULL AUTO_INCREMENT, tut_title VARCHAR(100) NOT NULL, tut_author VARCHAR(40) NOT NULL, submissoin_date DATE, PRIMARY KEY (tut_id));"
Αποθήκευση Αποτελεσμάτων Ερωτήματος MySQL σε Αρχείο
Θα χρησιμοποιήσουμε την ακόλουθη εντολή και θα κατευθύνουμε την έξοδο στην εντολή tee, ακολουθούμενη από το όνομα αρχείου όπου θέλουμε να αποθηκεύσουμε την έξοδο.
Για παράδειγμα, θα χρησιμοποιήσουμε μια βάση δεδομένων με όνομα employees και ένα απλό join μεταξύ των πινάκων employees και salaries. Στη δική σας περίπτωση, απλά πληκτρολογήστε το ερώτημα SQL μέσα στα εισαγωγικά και πατήστε Enter.
Σημειώστε ότι θα σας ζητηθεί να εισάγετε τον κωδικό πρόσβασης για τον χρήστη της βάσης δεδομένων:
sudo mysql -u root -p -e "USE employees; SELECT DISTINCT A.first_name, A.last_name FROM employees A JOIN salaries B ON A.emp_no = B.emp_no WHERE hire_date < '1985-01-31';" | tee queryresults.txt
Δείτε τα αποτελέσματα του ερωτήματος με τη βοήθεια της εντολής cat.
cat queryresults.txt
Εκτέλεση ερωτημάτων MySQL/MariaDB από τη γραμμή εντολών
Με τα αποτελέσματα του ερωτήματος σε απλά αρχεία κειμένου, μπορείτε να επεξεργαστείτε τις εγγραφές πιο εύκολα χρησιμοποιώντας άλλα εργαλεία γραμμής εντολών. Τώρα που έχετε δει τα βασικά, ας εξερευνήσουμε μερικές πιο προχωρημένες τεχνικές που θα κάνουν τη δουλειά σας με τη βάση δεδομένων από τη γραμμή εντολών ακόμα πιο αποτελεσματική.
Μορφοποίηση εξόδου για καλύτερη αναγνωσιμότητα
Η προεπιλεγμένη μορφή πίνακα είναι εξαιρετική για προβολή στο τερματικό, αλλά μερικές φορές χρειάζεστε διαφορετικές μορφές. Μπορείτε να εμφανίσετε τα αποτελέσματα σε κατακόρυφη μορφή, η οποία είναι ιδιαίτερα χρήσιμη όταν έχετε να κάνετε με πίνακες που έχουν πολλές στήλες:
sudo mysql -u root -p -e "USE employees; SELECT * FROM employees LIMIT 1\G"
Το \G στο τέλος εμφανίζει κάθε σειρά κάθετα αντί σε πίνακα, οπότε αντί να βλέπετε έναν συμπαγή οριζόντιο πίνακα, παίρνετε κάτι σαν:
*************************** 1. row ***************************
emp_no: 10001
birth_date: 1953-09-02
first_name: Georgi
last_name: Facello
gender: M
hire_date: 1984-06-02
Εξαγωγή σε μορφή CSV
Όταν χρειάζεται να εισαγάγετε τα αποτελέσματα ερωτημάτων σε εφαρμογές υπολογιστικών φύλλων ή άλλα εργαλεία, η μορφή CSV είναι η καλύτερη επιλογή σας:
sudo mysql -u root -p -e "USE employees; SELECT first_name, last_name, hire_date FROM employees WHERE hire_date < '1985-01-31';" | sed 's/\t/,/g' > employees.csv
Αυτό δρομολογεί την έξοδο μέσω του sed για να αντικαταστήσει τις καρτέλες με κόμματα, δημιουργώντας ένα σωστό αρχείο CSV που ανοίγει καθαρά στο Excel, στο LibreOffice Calc ή σε οποιοδήποτε άλλο λογισμικό υπολογιστικών φύλλων.
Εκτέλεση ερωτημάτων χωρίς προτροπές για κωδικό πρόσβασης
Αν αυτοματοποιείτε εργασίες βάσης δεδομένων με cron jobs ή scripts, δεν θέλετε να πληκτρολογείτε τους κωδικούς πρόσβασης κάθε φορά χειροκίνητα, εκεί μπαίνουν τα αρχεία ρυθμίσεων του MySQL.
Δημιουργήστε ένα αρχείο στο ~/.my.cnf με τα στοιχεία σύνδεσής σας:
[client]
user=root
password=your_password_here
Στη συνέχεια, ασφαλίστε το ώστε να μπορείτε να το διαβάζετε μόνο εσείς:
chmod 600 ~/.my.cnf
Τώρα μπορείτε να εκτελείτε ερωτήματα χωρίς τη σημαία -p και χωρίς να σας ζητείται:
mysql -e "SHOW DATABASES;"
Να θυμάσαι ότι η αποθήκευση κωδικών πρόσβασης σε αρχεία κειμένου απλού έχει συνέπειες για την ασφάλεια, οπότε να χρησιμοποιείς αυτή την προσέγγιση μόνο σε διακομιστές όπου έχεις τον έλεγχο της πρόσβασης και να εξετάσεις τη χρήση των πιο ασφαλών μεθόδων αυθεντικοποίησης του MySQL για περιβάλλοντα παραγωγής.
Εκτέλεση Πολύπλοκων Ερωτημάτων Πολλών Γραμμών
Μερικές φορές οι ερωτήσεις σας είναι πολύπλοκες για να γραφτούν σε μια μόνο γραμμή εντολής, ειδικά όταν ασχολείστε με πολλαπλά joins, υποερωτήματα ή πολύπλοκες συνθήκες.
Μπορείτε να βάλετε το SQL σας σε ένα αρχείο και να το εκτελέσετε:
cat > complex_query.sql << 'EOF'
USE employees;
SELECT
e.first_name,
e.last_name,
d.dept_name,
s.salary
FROM employees e
INNER JOIN dept_emp de ON e.emp_no = de.emp_no
INNER JOIN departments d ON de.dept_no = d.dept_no
INNER JOIN salaries s ON e.emp_no = s.emp_no
WHERE e.hire_date BETWEEN '1985-01-01' AND '1985-12-31'
AND s.from_date = (
SELECT MAX(from_date)
FROM salaries
WHERE emp_no = e.emp_no
)
ORDER BY s.salary DESC
LIMIT 10;
EOF
Τώρα εκτέλεσέ το.
sudo mysql -u root -p < complex_query.sql > top_earners_1985.txt
Αυτή η προσέγγιση κρατά τα ερωτήματά σας οργανωμένα και επαναχρησιμοποιήσιμα, και μπορείτε να τα διαχειριστείτε με έλεγχο εκδόσεων μέσω git όπως κάθε άλλο κώδικα.
Μαζική Επεξεργασία Πολλαπλών Ερωτήσεων
Αν χρειάζεται να εκτελέσετε πολλές σχετικές ερωτήσεις και να αποθηκεύσετε κάθε αποτέλεσμα ξεχωριστά, μπορείτε να το κάνετε με σενάριο:
#!/bin/bash
QUERIES=(
"SELECT COUNT(*) as total_employees FROM employees"
"SELECT dept_name, COUNT(*) as employee_count FROM dept_emp de JOIN departments d ON de.dept_no = d.dept_no GROUP BY dept_name"
"SELECT YEAR(hire_date) as year, COUNT(*) as hires FROM employees GROUP BY YEAR(hire_date) ORDER BY year"
)
FILENAMES=(
"total_count.txt"
"dept_distribution.txt"
"yearly_hires.txt"
)
for i in "${!QUERIES[@]}"; do
echo "Running query $((i+1))..."
mysql -u root -p -e "USE employees; ${QUERIES[$i]}" > "${FILENAMES[$i]}"
echo "Results saved to ${FILENAMES[$i]}"
done
Αποθήκευσε αυτό ως σενάριο, κάνε το εκτελέσιμο με chmod +x, και θα έχεις ένα επαναχρησιμοποιήσιμο εργαλείο για μαζικά ερωτήματα.
Παρακολούθηση Μακροχρόνιων Ερωτημάτων
Όταν εκτελείτε ερωτήματα που μπορεί να πάρουν χρόνο, θέλετε να δείτε την πρόοδο ή τουλάχιστον να ξέρετε ότι εξακολουθούν να λειτουργούν.
Συνδυάστε το ερώτημά σας με την έξοδο κατάστασης:
(sudo mysql -u root -p -e "USE employees; SELECT COUNT(*) FROM large_table WHERE complex_condition;" && echo "Query completed at $(date)") | tee query_log.txt
Για ακόμα μεγαλύτερες ερωτήσεις, εκτελέστε τις στο παρασκήνιο και παρακολουθήστε τη λίστα διεργασιών του MySQL:
sudo mysql -u root -p -e "USE employees; SELECT * FROM massive_table;" > output.txt &
sudo watch -n 5 'mysql -u root -p -e "SHOW PROCESSLIST\G" | grep -A 5 "SELECT"'
Αυτό εκτελεί το ερώτημά σας στο παρασκήνιο ενώ εμφανίζει τη λίστα διεργασιών κάθε 5 δευτερόλεπτα, ώστε να μπορείτε να δείτε ότι εξακολουθεί να λειτουργεί και πόσο έχει προχωρήσει.
Φιλτράρισμα και Επεξεργασία Αποτελεσμάτων
Μόλις έχετε τα αποτελέσματα ερωτήματος σε ένα αρχείο κειμένου, μπορείτε να χρησιμοποιήσετε τα τυπικά εργαλεία του Linux για περαιτέρω επεξεργασία τους. Ακολουθούν μερικά χρήσιμα παραδείγματα:
Μετρήστε τον αριθμό των αποτελεσμάτων (χωρίς την κεφαλίδα):
tail -n +2 queryresults.txt | wc -l
Εξαγωγή συγκεκριμένων στηλών χρησιμοποιώντας awk:
awk '{print $1, $3}' queryresults.txt
Αναζήτηση συγκεκριμένων προτύπων στα αποτελέσματα:
grep -i "engineering" dept_distribution.txt
Ταξινόμηση αποτελεσμάτων κατά αριθμητή στήλη:
tail -n +2 queryresults.txt | sort -k3 -n
Διαχείριση Ειδικών Χαρακτήρων και Μεγάλων Συνόλων Δεδομένων
Όταν τα δεδομένα σας περιέχουν ειδικούς χαρακτήρες, κενά διαστήματα ή νέες γραμμές, η προεπιλεγμένη έξοδος μπορεί να γίνει ακατάστατη, οπότε χρησιμοποιήστε τις επιλογές --batch και --raw για καθαρότερη έξοδο:
sudo mysql -u root -p --batch --raw -e "SELECT description FROM products WHERE category='electronics';" > products.txt
Για ερωτήματα που επιστρέφουν εκατομμύρια γραμμές, μπορεί να αντιμετωπίσετε προβλήματα μνήμης, αντί να φορτώσετε τα πάντα στη μνήμη, ροή των αποτελεσμάτων:
sudo mysql -u root -p --quick -e "SELECT * FROM huge_table;" | gzip > huge_results.txt.gz
Η επιλογή --quick λέει στο MySQL να ανακτά τις γραμμές μία προς μία αντί να αποθηκεύει ολόκληρο το σύνολο αποτελεσμάτων στη μνήμη, και η δρομολόγηση μέσω gzip συμπιέζει την έξοδο απευθείας, εξοικονομώντας χώρο στο δίσκο.
Δημιουργία γρήγορων αντιγράφων ασφαλείας βάσεων δεδομένων
Ενώ αυτό τεχνικά δεν εκτελεί ερωτήματα, μπορείτε να χρησιμοποιήσετε παρόμοιες τεχνικές γραμμής εντολών για να δημιουργήσετε γρήγορα αντίγραφα βάσεων δεδομένων με την εντολή mysqldump.
sudo mysqldump -u root -p employees | gzip > employees_backup_$(date +%Y%m%d).sql.gz
Ή δημιουργήστε αντίγραφο ασφαλείας μόνο συγκεκριμένων πινάκων:
sudo mysqldump -u root -p employees employees salaries | gzip > critical_tables_$(date +%Y%m%d).sql.gz
Προγραμματισμός Αυτοματοποιημένων Αναφορών
Συνδυάστε όλα όσα έχουμε καλύψει για να δημιουργήσετε αυτοματοποιημένες καθημερινές αναφορές χρησιμοποιώντας το cron με τη βοήθεια του παρακάτω script bash.
#!/bin/bash
REPORT_DATE=$(date +%Y-%m-%d)
REPORT_FILE="/var/reports/daily_stats_${REPORT_DATE}.txt"
{
echo "Database Statistics Report - ${REPORT_DATE}"
echo "=========================================="
echo
echo "Total Employees:"
mysql -e "USE employees; SELECT COUNT(*) FROM employees;"
echo
echo "New Hires This Month:"
mysql -e "USE employees; SELECT COUNT(*) FROM employees WHERE MONTH(hire_date) = MONTH(CURRENT_DATE()) AND YEAR(hire_date) = YEAR(CURRENT_DATE());"
echo
echo "Department Distribution:"
mysql -e "USE employees; SELECT d.dept_name, COUNT(*) as count FROM dept_emp de JOIN departments d ON de.dept_no = d.dept_no WHERE de.to_date = '9999-01-01' GROUP BY d.dept_name ORDER BY count DESC;"
} > "$REPORT_FILE"
echo "Report generated: $REPORT_FILE"
Προσθέστε το στο cron για να εκτελείται καθημερινά στις 6 π.μ.:
0 6 * * * /usr/local/bin/generate_db_report.sh
Περίληψη
Έχουμε μοιραστεί αρκετές συμβουλές για το Linux που μπορεί να βρείτε χρήσιμες ως διαχειριστής συστήματος, όταν πρόκειται να αυτοματοποιήσετε τις καθημερινές σας εργασίες στο Linux ή να τις εκτελέσετε πιο εύκολα.
Το βασικό συμπέρασμα εδώ είναι ότι δεν χρειάζεται πάντα να ανοίγετε το περιβάλλον MySQL ή να χρησιμοποιείτε βαριά εργαλεία GUI για να δουλέψετε με τις βάσεις δεδομένων σας· η γραμμή εντολών σας προσφέρει ταχύτητα, δυνατότητες αυτοματοποίησης και τη δυνατότητα ενσωμάτωσης των λειτουργιών βάσεων δεδομένων στα υπάρχοντα σενάρια και ροές εργασίας σας.
Έχετε άλλες συμβουλές που θα θέλατε να μοιραστείτε με την υπόλοιπη κοινότητα; Αν ναι, παρακαλούμε κάντε το χρησιμοποιώντας τη φόρμα σχολίων παρακάτω. :

