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 d'accès au répertoire de données sous Linux, vous pouvez exécuter :
mysqld --verbose --help | grep ^datadir
Exemple de sortie :
datadir /var/lib/mysql/
Vous pouvez essayer ceci-
mysql> select @@datadir;
PS- Cela fonctionne sur toutes les plateformes.
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 (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 voulez utiliser uniquement le répertoire de données :
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 .
Au fait, lors de l'exécution de which mysql
sous Linux comme vous l'avez dit, vous n'obtiendrez pas l'installation répertoire 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 en sortie, et uniquement 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électionnera la valeur uniquement à partir du information_schema
interne de mysql base de données et désactive la sortie tabulaire et les en-têtes de colonne.
Sortie sur Linux :
/var/lib/mysql
si vous voulez trouver datadir sous Linux ou Windows, vous pouvez faire la commande suivante
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'
si vous souhaitez trouver datadir, vous pouvez utiliser la commande grep &awk
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' | grep 'datadir' | awk '{print $2}'