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.

Prabhu
la source

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
hek2mgl
la source
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
161

Vous pouvez essayer ceci-

mysql> select @@datadir;

PS- Cela fonctionne sur toutes les plates-formes.

As_913
la source
10
Fonctionne bien sur OS X
Gilles De Mey
12
Fonctionne bien sur Ubuntu.
jmunsch
8
Fonctionne bien sur Win10
Hasan
4
Fonctionne sur le serveur 2012 r2
SimonS
3
Fonctionne sur RHEL 6
Alessandro Blasetti
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}'
Amrit Shrestha
la source
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

xgqfrms
la source
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/
Eugène Yarmash
la source
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();
GigolNet Guigolachvili
la source
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.

bluegrounds
la source
0

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

[root@localhost~]# mysqladmin variables -p<password> | grep datadir
Rakib
la source