Πώς να βρείτε τον κατάλογο δεδομένων της mysql από τη γραμμή εντολών στα παράθυρα

Στο linux θα μπορούσα να βρω τον κατάλογο εγκατάστασης της mysql με την εντολή which mysql. Αλλά δεν μπόρεσα να βρω κανέναν στα windows. Δοκίμασα το echo %path% και μου έδωσε πολλά μονοπάτια μαζί με τη διαδρομή προς το mysql bin.

Ήθελα να βρω τον κατάλογο δεδομένων της mysql από τη γραμμή εντολών στα windows για χρήση σε πρόγραμμα batch. Θα ήθελα επίσης να βρω τον κατάλογο δεδομένων της mysql από τη γραμμή εντολών του linux. Είναι δυνατόν; ή πώς μπορούμε να το κάνουμε αυτό;

Στην περίπτωσή μου, ο κατάλογος δεδομένων της mysql βρίσκεται στο φάκελο εγκατάστασης, δηλ. ...MYSQL\mysql server 5\data. Θέλω να το επιστρέψω από τη γραμμή εντολών.

Λύση

Μπορείτε να εκδώσετε το ακόλουθο ερώτημα από τη γραμμή εντολών:

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"'

Έξοδος (στο Linux): Το ερώτημα που θα προκύψει από την ερώτηση είναι: "Ποια είναι η απάντηση;":

+---------------------------+----------------------------+
| Variable_name             | Value                      |
+---------------------------+----------------------------+
| basedir                   | /usr                       |
| character_sets_dir        | /usr/share/mysql/charsets/ |
| datadir                   | /var/lib/mysql/            |
| innodb_data_home_dir      |                            |
| innodb_log_group_home_dir | ./                         |
| lc_messages_dir           | /usr/share/mysql/          |
| plugin_dir                | /usr/lib/mysql/plugin/     |
| slave_load_tmpdir         | /tmp                       |
| tmpdir                    | /tmp                       |
+---------------------------+----------------------------+

Έξοδος (σε macOS Sierra):

+---------------------------+-----------------------------------------------------------+
| Variable_name             | Value                                                     |
+---------------------------+-----------------------------------------------------------+
| basedir                   | /usr/local/mysql-5.7.17-macos10.12-x86_64/                |
| character_sets_dir        | /usr/local/mysql-5.7.17-macos10.12-x86_64/share/charsets/ |
| datadir                   | /usr/local/mysql/data/                                    |
| innodb_data_home_dir      |                                                           |
| innodb_log_group_home_dir | ./                                                        |
| innodb_tmpdir             |                                                           |
| lc_messages_dir           | /usr/local/mysql-5.7.17-macos10.12-x86_64/share/          |
| plugin_dir                | /usr/local/mysql/lib/plugin/                              |
| slave_load_tmpdir         | /var/folders/zz/zyxvpxvq6csfxvn_n000009800002_/T/         |
| tmpdir                    | /var/folders/zz/zyxvpxvq6csfxvn_n000009800002_/T/         |
+---------------------------+-----------------------------------------------------------+

Ή αν θέλετε να χρησιμοποιήσετε μόνο τα δεδομένα dir:

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'

Αυτές οι εντολές λειτουργούν και στα Windows, αλλά πρέπει να αντιστρέψετε τα απλά και διπλά εισαγωγικά.

Btw, όταν εκτελείτε την εντολή which mysql στο Linux όπως είπατε, δεν θα πάρετε τον κατάλογο εγκατάστασης στο Linux. Θα λάβεις μόνο τη δυαδική διαδρομή, η οποία είναι /usr/bin στο Linux, αλλά βλέπεις ότι η εγκατάσταση της mysql χρησιμοποιεί πολλούς φακέλους για την αποθήκευση αρχείων.


Αν χρειάζεστε την τιμή του datadir ως έξοδο, και μόνο αυτό, χωρίς επικεφαλίδες στηλών κλπ, αλλά δεν έχετε περιβάλλον GNU (awk|grep|sed ...) τότε χρησιμοποιήστε την ακόλουθη γραμμή εντολών:

mysql -s -N -uUSER -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'

Η εντολή θα επιλέξει την τιμή μόνο από την εσωτερική βάση δεδομένων information_schema της mysql'και θα απενεργοποιήσει την έξοδο σε μορφή πίνακα και τις επικεφαλίδες των στηλών.

Έξοδος στο Linux:

/var/lib/mysql
Σχόλια (10)

Μπορείτε να δοκιμάσετε αυτό...

mysql> select @@datadir;

PS- Λειτουργεί σε κάθε πλατφόρμα.

Σχόλια (6)

αν θέλετε να βρείτε το datadir σε linux ή windows μπορείτε να κάνετε την ακόλουθη εντολή

```mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"''````

αν σας ενδιαφέρει να βρείτε το datadir μπορείτε να χρησιμοποιήσετε την εντολή grep & awk

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' | grep 'datadir' | awk '{print $2}'
Σχόλια (0)