Réponses:
Comme Chealion l'a mentionné, votre mysql aurait pu être installé de plusieurs manières. Chacun de ces éléments placera votre répertoire de données et / ou vos journaux à des emplacements différents. La commande suivante vous donnera (et à nous) une bonne indication de l'endroit où regarder.
ps auxww|grep [m]ysqld
# Putting brackets around the first char is a `grep`+`ps` trick
# to keep it from matching its own process.
# Note: For zsh compatibility put quotes around the grep regex
Pouvez-vous poster le résultat de cette commande ici s'il vous plaît? Le mien ressemble à ceci:
_mysql 101 0.0 0.3 112104 13268 ?? S 12:30AM 0:13.20 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql --user=mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
root 76 0.0 0.0 600172 688 ?? S 12:30AM 0:00.02 /bin/sh /opt/local/lib/mysql/bin/mysqld_safe --datadir=/opt/local/var/db/mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
À partir de là, vous pouvez voir que mon datadir est /opt/local/var/db/mysql
(parce que j'ai installé via MacPorts). Allons un peu plus loin dans cette leçon ...
Dès la première ligne, vous pouvez voir que le démon my est /opt/local/libexec/mysqld
. Vous mysqld
pouvez appeler avec --verbose --help
pour obtenir une liste de toutes les options de ligne de commande (et voici la partie importante / précieuse!) Suivie des valeurs qui seraient utilisées si vous lanciez mysqld au lieu de simplement consulter l'aide. Les valeurs sont le résultat de votre configuration lors de la compilation, du my.cnf
fichier et de toutes les options de ligne de commande. Je peux exploiter cette fonctionnalité pour savoir EXACTEMENT où sont mes fichiers de log, comme ceci:
/opt/local/libexec/mysqld --verbose --help|grep '^log'
Le mien ressemble à ceci:
log /tmp/mysql.log
log-bin /tmp/mysql-bin
log-bin-index (No default value)
log-bin-trust-function-creators FALSE
log-bin-trust-routine-creators FALSE
log-error /tmp/mysql.error.log
log-isam myisam.log
log-queries-not-using-indexes FALSE
log-short-format FALSE
log-slave-updates FALSE
log-slow-admin-statements FALSE
log-slow-queries (No default value)
log-tc tc.log
log-tc-size 24576
log-update (No default value)
log-warnings 1
ET VOILÀ! Tous les conseils du monde ne vont pas m'aider car mon fichier journal est conservé dans un emplacement totalement non standard! Je garde le mien /tmp/
parce que, sur mon ordinateur portable, je ne me soucie pas (en fait, je préfère) de perdre tous mes journaux au redémarrage.
Mettons tout cela ensemble et faisons de vous un élève:
$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
Exécutez cette commande et vous obtiendrez une liste de tous les journaux de votre instance active de mysql.
Prendre plaisir!
Ce Bash-Fu vous a été offert gratuitement par mon engagement en faveur de l’Open Source.
Il existe 3 types de journaux MySQL / MariaDB:
log_error
pour le journal des messages d'erreur;general_log_file
pour le fichier journal de requête général (si activé par general_log
);slow_query_log_file
pour le fichier journal de requête lente (si activé par slow_query_log
);Vérifiez les paramètres et l'emplacement des journaux ci-dessus à l'aide de cette commande shell:
mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log
Par défaut, les journaux sont stockés dans votre répertoire de données. Vérifiez donc l'emplacement à l'aide de cette commande shell:
mysql -se "SELECT @@datadir"
Pour afficher votre journal des erreurs, vous pouvez exécuter:
sudo tail -f $(mysql -Nse "SELECT @@log_error")
Si vous avez activé le journal général, pour le visualiser, exécutez:
sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
Il m'a fallu un certain temps pour trouver ceci ... essayez cette localisation: '
sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
/usr/local/var/mysql/<USERNAME>.local.err
Par défaut, tous les fichiers journaux sont créés dans le répertoire de données mysqld.
Source: Documentation MySQL
Vous pouvez utiliser mysqlbinlog
pour lire les fichiers journaux binaires dans / usr / local / mysql / data / (dans mon installation, tous n'étaient pas binaires). Certaines erreurs sont simplement dirigées vers stderr, vous pouvez donc également vérifier /var/log/system.log
.
Le dossier contenant ce journal peut ne pas vous être accessible sans utiliser sudo
:
sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x--- 4 _mysql wheel 136 Jul 10 23:06 data
Si vous trouvez un fichier journal volumineux et que vous utilisez Time Machine, vous voudrez peut-être lire Que fait Time Machine? sur faute de serveur.
Par défaut, tous les fichiers journaux sont créés dans le répertoire de données mysqld. Malheureusement, beaucoup de gens ne mettent pas leurs fichiers journaux (et leurs programmes) dans leurs emplacements habituels. Je suis l'un deux!
J'ai moi-même suivi cette routine avec MySQL jusqu'à ce que je teste Navicat pour MySQL . Plus tard, je suis passé à Navicat Premium . Les deux ont un outil de surveillance qui contient un onglet avec toutes les variables de serveur dans une liste complète. Voici une capture d'écran avec la variable serveur log_error:
Variable de serveur log_error dans Navicat Server Monitoring Tool
Vous pouvez également définir les variables directement dans la liste.
À votre santé!
/Bibliothèque/Logs/MySQL.log
mysqladmin variables
est maintenant la commande préférée pour obtenir la valeur actuelle au lieu d'utiliser directementmysqld