web-dev-qa-db-fra.com

Comment trouver le répertoire de données mysql en ligne de commande dans Windows

Sous Linux, je pouvais trouver le répertoire d’installation mysql avec la commande which mysql. Mais je ne pouvais pas en trouver dans les fenêtres. 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 un programme batch. Je voudrais aussi 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.-à-d. ..MYSQL\mysql server 5\data Il peut toutefois être installé sur n’importe quel lecteur. Je veux le faire revenir de la ligne de commande.

167
Prabhu

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 utiliser que le répertoire data:

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 de 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 des fichiers.


Si vous avez besoin de la valeur de datadir en sortie, et seulement 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 ne sélectionnera que la valeur de 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
275
hek2mgl

Vous pouvez essayer ceci- 

mysql> select @@datadir;

PS- Cela fonctionne sur toutes les plateformes.

140
As_913

si vous voulez trouver datadir 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é pour trouver datadir, vous pouvez utiliser la commande grep & awk 

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

Vous pouvez voir la liste complète des options du serveur MySQL en lançant

mysqld --verbose --help

Par exemple, pour connaître le chemin du répertoire data sur Linux, vous pouvez exécuter:

mysqld --verbose --help | grep ^datadir

Exemple de sortie:

datadir                                     /var/lib/mysql/
1
Eugene Yarmash

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

1. pas de mot de passe de MySQL: 

mysql ?

2. avoir le mot de passe de MySQL:

mysql -uroot -ppassword mysql ?

 enter image description here  enter image description here

1
xgqfrms
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 répertoire Data est dans "C:\ProgramData\MySQL\MySQL Server 5.7\Data". Ceci est où il est sur mon ordinateur. Quelqu'un pourrait trouver cela utile.

0
bluegrounds

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

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