211 votes

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

Sous Linux, je pouvais trouver le répertoire d'installation de MySQL avec la commande which mysql. Mais je n'ai pas pu en trouver un sous Windows. J'ai essayé echo %path% et cela a donné de nombreux chemins ainsi que le chemin d'accès au répertoire binaire de mysql.

Je voulais trouver le répertoire de données de mysql à partir de la ligne de commande sous Windows pour l'utiliser dans un programme en lot. J'aimerais également trouver le répertoire de données de mysql à partir de la ligne de commande sous Linux. Est-ce possible? ou comment pouvons-nous faire cela?

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

343voto

hek2mgl Points 38787

Vous pouvez exécuter la requête suivante depuis la ligne de commande :

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

Sortie (sur 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 souhaitez seulement le répertoire des données :

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

Ces commandes fonctionnent également sur Windows, mais vous devez inverser les guillemets simples et doubles.

Soit dit en passant, lors de l'exécution de la commande which mysql sur Linux comme vous l'avez dit, vous n'obtiendrez pas le répertoire d'installation sur Linux. Vous obtiendrez seulement le chemin vers l'exécutable, qui est /usr/bin sur Linux, mais vous verrez que l'installation de mysql utilise plusieurs dossiers pour stocker les fichiers.


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

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

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

Sortie sur Linux :

/var/lib/mysql

0 votes

J'ai utilisé mysql -uroot -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir" | grep "datadir" | awk "{print $2}"' pour trouver le chemin réel de datadir dans linux. Comment puis-je trouver uniquement ce chemin dans Windows ?

1 votes

@Prabhu Vous pouvez le faire seulement avec la commande mysql. Aucun autre outil n'est nécessaire. Vérifiez ma mise à jour

0 votes

La commande s'exécute correctement sous linux. Elle ne s'exécute pas correctement sous Windows XP. La première commande renvoie une erreur - vous avez une erreur dans votre syntaxe SQL près de où Variable_Nom = 'dirname'. La deuxième commande renvoie une erreur - base de données inconnue information_schema

186voto

As_913 Points 151

Vous pouvez essayer ceci -

mysql> select @@datadir;

PS- Cela fonctionne sur toutes les plates-formes.

12 votes

Fonctionne bien sur Ubuntu.

4 votes

Travaux sur serveur 2012 r2

3 votes

Fonctionne sur RHEL 6

8voto

eugene y Points 37378

Vous pouvez voir la liste complète des options du serveur MySQL en exécutant

mysqld --verbose --help

Par exemple, pour trouver le chemin du répertoire de données sous Linux, vous pouvez exécuter :

mysqld --verbose --help | grep ^datadir

Exemple de sortie :

datadir                                     /var/lib/mysql/

1 votes

Fait intéressant, cette commande me donne mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13 - Permission denied) juste avant le datadir réel. Je n'ai absolument aucune idée pourquoi il essaie de changer de répertoire de travail. J'ai inspecté un peu et il essaie cela quand j'utilise mysqld --verbose --help. Probablement essaie de faire un travail et a besoin d'aller dans le répertoire des données. Quoi qu'il en soit, la solution temporaire rapide est mysqld --verbose --help 2>/dev/null | grep ^datadir

4voto

Amrit Shrestha Points 83

Si vous voulez trouver datadir dans Linux ou Windows, vous pouvez utiliser la commande suivante

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

Si vous êtes intéressé à trouver datadir, vous pouvez utiliser la commande grep & awk

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

1voto

Rakib Points 639

Utilisez la commande ci-dessous depuis l'interface CLI

[root@localhost~]# mysqladmin variables -p | grep datadir

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X