88 votes

Où se trouve mon journal mysql sous OS X ?

J'ai vérifié /var/log et /usr/local/mysql et je n'arrive pas à trouver le journal. J'essaie de résoudre une erreur en établissant une connexion à une base de données avec une fonction php.

105voto

Bruno Bronosky Points 4409

Comme Chealion l'a mentionné, il y a plusieurs façons dont votre mysql a pu être installé. Chacune d'entre elles placera votre répertoire de données et/ou vos journaux à des endroits différents. La commande suivante vous (et nous) donnera une bonne indication de l'endroit où chercher.

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 afficher 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

A partir de là, vous pouvez voir que mon répertoire de données est /opt/local/var/db/mysql (parce que j'ai installé via MacPorts). Poussons cette leçon un peu plus loin...

A partir de la première ligne, vous pouvez voir que mon daemon est /opt/local/libexec/mysqld . Le site mysqld peut être appelé avec --verbose --help pour obtenir une liste de toutes les options de la 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 vérifier la sortie de l'aide. Ces valeurs sont le résultat de votre configuration à la compilation, my.cnf et toutes les options de la ligne de commande. Je peux exploiter cette fonctionnalité pour trouver EXACTEMENT l'emplacement de mes fichiers journaux, comme suit :

/opt/local/libexec/mysqld --verbose --help|grep '^log'

Le mien ressemble à ça :

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

LO AND BEHOLD ! Tous les conseils du monde n'allaient pas m'aider parce que mon fichier journal est conservé dans un endroit complètement non standard ! Je garde le mien dans /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 ça ensemble et faisons de vous un oneliner :

$(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 pour votre instance de mysql en cours d'exécution.

Profitez-en !

Ce Bash-Fu vous est offert gratuitement par mon engagement envers tout ce qui est Open Source.

3 votes

mysqladmin variables est désormais la commande préférée pour obtenir la valeur actuelle plutôt que d'utiliser directement la commande mysqld

0 votes

@JohnCummings, Source ?

1 votes

Aujourd'hui, j'ai reçu un vote négatif sans aucun commentaire. Je maintiens toutes mes réponses. Même celles qui datent de 10 ans. Vous n'aidez personne en votant à la baisse. Laissez un commentaire !

16voto

Zafar Points 241

Il existe 3 types de journaux MySQL/MariaDB :

  • log_error pour le journal des messages d'erreur ;
  • general_log_file pour le fichier journal des requêtes générales (si activé par general_log ) ;
  • slow_query_log_file pour le fichier journal des requêtes lentes (si activé par slow_query_log ) ;

Vérifiez les paramètres et l'emplacement des journaux ci-dessus par cette commande Shell :

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log

Par défaut les logs sont stockés dans votre répertoire de données, donc vérifiez l'emplacement par cette commande Shell :

mysql -se "SELECT @@datadir"

Pour afficher votre journal d'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)")

11voto

tobym Points 5791

Une autre façon de trouver cette information est d'utiliser lsof .

  1. Utilisez le moniteur d'activité pour trouver le PID de mysql ou utiliser ps -ef | grep mysqld pour le trouver.

  2. sudo lsof -p PID_OF_MYSQLD et voir quels sont les fichiers ouverts par MySQL.

0 votes

C'est la seule méthode qui a fonctionné pour moi. Mysql ignore totalement ce qui se trouve dans mes fichiers 'my.cnf'.

9voto

Il m'a fallu un certain temps pour trouver ceci... essayez cet emplacement :'.

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err

5 votes

Le mien était en /usr/local/var/mysql/<USERNAME>.local.err

4voto

Steven Murawski Points 6665

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 donc vous pouvez vérifier /var/log/system.log également.

0 votes

Je n'ai pas de répertoire de données dans le répertoire mysql. J'ai cherché dans tout le répertoire /usr/local/mysql/ et je n'ai pas trouvé le journal. Il n'y a aucun moyen de voir la configuration mysql ? comme un phpinfo().

0 votes

Comment avez-vous installé MySQL ? MySQL préinstallé avec Mac OS X Server, MacPorts, ou le paquetage officiel de MySQL ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X