Ako nájsť dátový adresár mysql z príkazového riadku v systéme Windows

V Linuxe som mohol nájsť adresár inštalácie mysql príkazom which mysql. Vo windowse som však žiadny nenašiel. Skúšal som echo %path% a výsledkom bolo veľa ciest spolu s cestou k mysql bin.

Chcel som nájsť adresár s údajmi mysql z príkazového riadku vo windowse na použitie v dávkovom programe. Chcel by som tiež nájsť adresár s údajmi mysql z príkazového riadku v linuxe. Je to možné? alebo ako to môžeme urobiť?

V mojom prípade je adresár s údajmi mysql v inštalačnom priečinku, t. j. ..MYSQL\mysql server 5\data Môže však byť nainštalovaný na ľubovoľnom disku. Chcem ho získať späť z príkazového riadku.

Riešenie

Z príkazového riadku môžete zadať nasledujúci dotaz:

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

Výstup (v Linuxe):

+---------------------------+----------------------------+
| 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                       |
+---------------------------+----------------------------+

Výstup (v systéme 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/         |
+---------------------------+-----------------------------------------------------------+

Alebo ak chcete použiť iba údaje dir:

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

Tieto príkazy fungujú aj v systéme Windows, ale musíte obrátiť jednoduché a dvojité úvodzovky.

Btw, pri spustení príkazu which mysql v Linuxe, ako ste povedali, nedostanete v Linuxe adresár installation. Dostanete'len binárnu cestu, ktorá je v Linuxe /usr/bin, ale vidíte, že inštalácia mysql používa na ukladanie súborov viacero adresárov.


Ak potrebujete ako výstup hodnotu datadir, a len tú, bez hlavičiek stĺpcov atď., ale nemáte prostredie GNU (awk|grep|sed ...), potom použite nasledujúci príkazový riadok:

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

Tento príkaz vyberie hodnotu len z internej databázy mysql'information_schema a vypne tabuľkový výstup a hlavičky stĺpcov.

Výstup na Linuxe:

/var/lib/mysql
Komentáre (10)

Môžete vyskúšať toto -

mysql> select @@datadir;

PS- Funguje na každej platforme.

Komentáre (6)

ak chcete nájsť datadir v Linuxe alebo Windows, môžete vykonať nasledujúci príkaz

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

ak máte záujem nájsť datadir, môžete použiť príkaz grep &; awk

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' | grep 'datadir' | awk '{print $2}'
Komentáre (0)