Comment trouver le répertoire de données mysql à partir de la ligne de commande sous Windows ?

Sous linux, j'ai pu trouver le répertoire d'installation de mysql avec la commande which mysql. Mais je n'ai pu en trouver aucun sous Windows. J'ai essayé echo %path% et j'ai obtenu plusieurs chemins avec le chemin vers le répertoire bin mysql.

Je voulais trouver le répertoire de données mysql en ligne de commande dans Windows pour l'utiliser dans un programme batch. Je voudrais également trouver le répertoire de données mysql à partir de la ligne de commande linux. Est-ce possible ? ou comment faire ?

Dans mon cas, le répertoire de données mysql se trouve dans le dossier d'installation, c'est-à-dire ..MYSQL\mysql server 5\data Il peut cependant être installé sur n'importe quel lecteur. Je veux le récupérer à partir de la ligne de commande.

Solution

Vous pouvez lancer la requête suivante à partir de la ligne de commande :

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

Sortie (sous 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                       |
+---------------------------+----------------------------+

Sortie (sur 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/         |
+---------------------------+-----------------------------------------------------------+

Ou si vous voulez seulement les données que vous utilisez :

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

Ces commandes fonctionnent aussi sous Windows, mais vous devez inverser les guillemets simples et doubles.

En fait, lorsque vous exécutez which mysql sous Linux comme vous l'avez dit, vous n'obtiendrez pas le répertoire installation sous Linux. Vous n'obtiendrez que le chemin binaire, qui est /usr/bin sous Linux, mais vous voyez que l'installation de mysql utilise plusieurs dossiers pour stocker les fichiers.


Si vous avez besoin de la valeur de datadir comme sortie, et seulement cela, sans les en-têtes de colonnes etc, mais que vous n'avez pas d'environnement GNU (awk|grep|sed ...) alors utilisez la ligne de commande suivante :

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

Cette commande sélectionnera la valeur uniquement dans la base de données interne information_schema de mysql et désactivera la sortie tabulaire et les en-têtes de colonnes.

Sortie sous Linux :

/var/lib/mysql
Commentaires (10)

Vous pouvez essayer ceci.

mysql> select @@datadir;

PS- Ça marche sur toutes les plateformes.

Commentaires (6)

Si vous voulez trouver le répertoire de données sous linux ou windows vous pouvez faire la commande suivante

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

Si vous souhaitez trouver le répertoire de données, vous pouvez utiliser les commandes grep et awk.

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