Vraag Waar meldt mijn mysql zich aan OS X?


Ik controleerde / var / log en / usr / local / mysql en ik kan het log niet vinden. Ik probeer een fout op te lossen bij het tot stand brengen van een databaseverbinding met een php-functie.


66
2017-07-18 15:58


oorsprong




antwoorden:


Zoals Chealion al zei, zijn er verschillende manieren waarop je mysql geïnstalleerd zou kunnen zijn. Elk daarvan plaatst uw gegevens direct en / of logboeken op verschillende locaties. De volgende opdracht geeft u (en ons) een goede indicatie van waar u moet kijken.

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

Kun je alsjeblieft het resultaat van die opdracht hier posten? De mijne ziet er zo uit:

_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

Daaruit kun je zien dat mijn datadir is /opt/local/var/db/mysql (omdat ik via MacPorts heb geïnstalleerd). Laten we deze les een beetje verder nemen ...

Vanaf de eerste regel kun je zien dat mijn daemon is /opt/local/libexec/mysqld. De mysqld kan worden gebeld --verbose --help om een ​​lijst te krijgen van alle commandoregel-opties (en hier is het belangrijke / waardevolle deel!) gevolgd door de waarden die zouden worden gebruikt als je mysqld zou starten in plaats van alleen de help-uitvoer te controleren. De waarden zijn het resultaat van uw compileertijdconfiguratie, my.cnf bestand en eventuele opdrachtregelopties. Ik kan deze functie gebruiken om er PRECIES achter te komen waar mijn logbestanden zich bevinden, zoals:

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

De mijne ziet er zo uit:

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 EN BEHOLD! al het advies in de wereld zou me niet helpen, omdat mijn logbestand op een volledig niet-standaard locatie wordt bewaard! Ik bewaar de mijne /tmp/ want op mijn laptop kan het mij niet schelen (eigenlijk verkies ik) om al mijn logs bij het opnieuw opstarten te verliezen.

Laten we het allemaal samenvoegen en u een oneliner maken:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

Voer die ene opdracht uit en u krijgt een lijst met alle logboeken voor uw actieve exemplaar van mysql.

Genieten!

Deze Bash-Fu wordt gratis aangeboden door mijn inzet voor alle dingen Open Source.


85
2017-07-20 17:06



mysqladmin variables is nu het voorkeurscommando voor het ophalen van de huidige waarde in plaats van direct te gebruiken mysqld - John Cummings
@ John Cummings, Bron? - Pacerier
Vandaag kreeg ik een negatieve stem zonder opmerkingen. Ik behoud al mijn antwoorden. Zelfs degenen die 10 jaar oud zijn. Je helpt niemand door te stemmen. Laat een reactie achter! - Bruno Bronosky
@ jm3 zorg om uit te werken? Ik heb geen toegang meer tot MacOS. - Bruno Bronosky


Een andere manier om deze informatie te vinden is om te gebruiken lsof.

  1. Gebruik Activity Monitor om de PID te vinden van mysql, of gebruik ps -ef | grep mysqld om het te vinden.

  2. sudo lsof -p PID_OF_MYSQLD en zie welke bestanden MySQL heeft geopend.


9
2017-10-29 14:30





Er zijn 3 soorten MySQL / MariaDB-logs:

  • log_error voor het logboek met foutmeldingen;
  • general_log_file voor het algemene querylogbestand (indien ingeschakeld door general_log);
  • slow_query_log_file voor het trage querylogbestand (indien ingeschakeld door slow_query_log);

Controleer de instellingen en locatie van bovenstaande logboeken met deze shell-opdracht:

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

Standaard worden de logboeken opgeslagen in uw gegevensmap, dus controleer de locatie met deze shell-opdracht:

mysql -se "SELECT @@datadir"

Om uw foutenlogboek te bekijken, kunt u het volgende uitvoeren:

sudo tail -f $(mysql -Nse "SELECT @@log_error")

Als u algemene log hebt ingeschakeld, kunt u het weergeven door het volgende uit te voeren:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")

8
2018-06-09 15:09





Heb een tijdje geduurd om dit te vinden ... probeer deze locatie: '

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

5
2017-07-25 15:32



De mijne was binnen /usr/local/var/mysql/<USERNAME>.local.err - jonnysamps


Standaard worden alle logbestanden gemaakt in de mysqld-gegevensdirectory.

Bron: MySQL-documentatie

Je kunt gebruiken mysqlbinlog om de binaire logbestanden in / usr / local / mysql / data / te lezen (in mijn installatie waren niet alle binaire bestanden). Sommige fouten zijn eenvoudig gericht op stderr, dus u wilt misschien controleren /var/log/system.log ook.


3
2017-07-18 16:10



Ik heb geen data map in de mysql map. Ik heb overal in de / usr / local / mysql / directory gekeken en kan het log niet vinden. er is geen manier om de mysql-configuratie te bekijken? als een phpinfo () - Tony
Hoe heb je MySQL geïnstalleerd? De vooraf geïnstalleerde MySQL met Mac OS X Server, MacPorts of het officiële MySQL-pakket? - Chealion


De map met dat logboek is mogelijk niet voor u toegankelijk zonder te gebruiken sudo:

sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x---   4 _mysql  wheel    136 Jul 10 23:06 data

Als u toevallig een groot logbestand vindt en als u Time Machine gebruikt, wilt u misschien lezen Wat doet Time Machine? op serverfout.


0
2017-07-18 16:59



ik heb geen data dir in / usr / local / mysql - Tony


/Library/Logs/MySQL.log


-1
2017-07-18 16:53



ik zie andere logboeken daarin, maar niet mysql - Tony
Welke versie van Mac OS X Server is dit? Over het algemeen wilt u in / var / log / & / Bibliotheek / Logs / onder Mac OS X Server zoeken. Meer specifiek voor dit probleem, kijk op /var/log/system.log, er kan iets van gebruik zijn in / var / mysql (zoals de .err-logbestanden), maar ik (op de standaardconfiguratie van Leopard Server) heb ook de eerder genoemde / Library / Logs / MySQL.log. Probeert u verbinding te maken via de socket of een netwerkverbinding? Als dat laatste het geval was, had u "Netwerkverbindingen inschakelen" in Server Admin (op Leopard; in Tiger was het een afzonderlijke app in / Programma's / Hulpprogramma's)? - morgant