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


190

Sous Linux, je pouvais trouver le répertoire d'installation mysql avec la commande which mysql. Mais je n'ai pas pu en trouver dans Windows. J'ai essayé echo %path%et il en a résulté de nombreux chemins avec le chemin vers mysql bin.

Je voulais trouver le répertoire de données mysql à partir de la ligne de commande dans Windows pour une utilisation dans le programme batch. Je voudrais également trouver le répertoire de données mysql à partir de la ligne de commande linux. C'est possible? ou comment pouvons-nous faire cela?

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

Réponses:


305

Vous pouvez émettre 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 ne voulez que le répertoire de données, utilisez:

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

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

Btw, lors de l'exécution which mysqlsous Linux comme vous l'avez dit, vous n'obtiendrez pas le répertoire d' installation sous Linux. Vous n'obtiendrez que le chemin binaire, qui est /usr/binsous 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 de cela, sans en-têtes de colonne, etc., mais que vous n'avez pas d'environnement GNU (awk | grep | sed ...), utilisez la ligne de commande suivante:

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

La commande sélectionne la valeur uniquement dans la information_schemabase de données interne de mysql et désactive la sortie tabulaire et les en-têtes de colonne.

Sortie sous Linux:

/var/lib/mysql

J'ai utilisé mysql -uroot -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir" | grep "datadir" | awk "{print $ 2}" 'pour trouver le chemin réel du datadir sous Linux. Comment ne trouver que ce chemin dans Windows?
Prabhu

1
@Prabhu Vous pouvez le faire simplement avec la mysqlcommande. Aucun autre outil n'est requis. Vérifier ma mise à jour
hek2mgl

La commande s'exécute ok sous linux. Il ne s'exécute pas bien dans Windows XP. la première commande donne une erreur - vous avez une erreur dans votre syntaxe SQL près de l'endroit où Variable_Name = 'dirname'. La deuxième commande donne une erreur - unknown database information_schema
Prabhu

1
Pour que cela fonctionne sous Windows, inversez simplement les guillemets doubles / simples:mysql -uUSER -p -e "SHOW VARIABLES WHERE Variable_Name LIKE '%dir'"
Leonardo Herrera

1
Merci pour cela! Exécution de "SHOW VARIABLES WHERE Variable_Name =" datadir ""; sur ma base de données phpmyadmin m'a aidé à trouver l'emplacement du répertoire de base de données.
Aurgho Bhattacharjee


5

si vous voulez trouver des données dans Linux ou Windows, vous pouvez faire la commande suivante

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

si vous êtes intéressé par la recherche de datadir, vous pouvez utiliser la commande grep & awk

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

1

Sortie sous Windows:
vous pouvez simplement utiliser cette commande, c'est très simple!

1. pas de mot de passe MySQL:

mysql ?

2. avoir le mot de passe MySQL:

mysql -uroot -ppassword mysql ?

entrez la description de l'image ici entrez la description de l'image ici


1

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

mysqld --verbose --help

Par exemple, pour connaître 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/

0
public function variables($variable="")
{
  return empty($variable) ? mysql_query("SHOW VARIABLES") : mysql_query("SELECT @@$variable");
}

/*get datadir*/
$res = variables("datadir");

/*or get all variables*/
$res = variables();

0

Vérifiez si le Datarépertoire est au format "C:\ProgramData\MySQL\MySQL Server 5.7\Data". C'est là que c'est sur mon ordinateur. Quelqu'un pourrait trouver cela utile.


0

Utilisez la commande ci-dessous à partir de l'interface CLI

[root@localhost~]# mysqladmin variables -p<password> | grep datadir
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.