Hoe logbestanden in MySQL te zien?

Ik heb gelezen dat de Mysql-server een logbestand aanmaakt waarin alle activiteiten worden bijgehouden, zoals wanneer en welke query’s worden uitgevoerd.

Kan iemand mij vertellen waar het bestaat in mijn systeem? Hoe kan ik het lezen?

In principe moet ik een back-up van de database maken met verschillende invoer [back-up tussen twee datums], dus ik denk dat ik hier een logbestand moet gebruiken, daarom wil ik het doen…

Ik denk dat dit logboek op de een of andere manier moet worden beveiligd, omdat gevoelige informatie zoals gebruikersnamen en wachtwoorden kan worden vastgelegd [als een query dit vereist]; dus mag het worden beveiligd, niet gemakkelijk te zien?

Ik heb root-toegang tot het systeem, hoe kan ik het logboek zien?

Als ik /var/log/mysql.log probeer te openen, is het leeg.

Dit is mijn configuratiebestand:

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0
[mysqld]
log = /var/log/mysql/mysql.log 
binlog-do-db=zero
user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
skip-external-locking
bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Antwoord 1, autoriteit 100%

Hier is een eenvoudige manier om ze in te schakelen. In mysql moeten we vaak 3 logs zien die meestal nodig zijn tijdens projectontwikkeling.

  • The Error Log. Het bevat informatie over fouten die optreden tijdens:
    de server draait (ook server start en stop)

  • The General Query Log. Dit is een algemeen overzicht van wat mysqld is
    doen (verbinden, verbreken, vragen)

  • The Slow Query Log. Het bestaat uit “trage” SQL-instructies (as
    aangegeven met zijn naam).

Standaard zijn er geen logbestanden ingeschakeld in MYSQL. Alle fouten worden weergegeven in de syslog (/var/log/syslog).

Volg de onderstaande stappen om ze in te schakelen:

stap1:Ga naar dit bestand (/etc/mysql/conf.d/mysqld_safe_syslog.cnf) en verwijder of becommentarieer die regel.

stap2:Ga naar mysql conf-bestand (/etc/mysql/my.cnf) en voeg de volgende regels toe

Als u het foutenlogboek wilt inschakelen, voegt u het volgende toe

[mysqld_safe]
log_error=/var/log/mysql/mysql_error.log
[mysqld]
log_error=/var/log/mysql/mysql_error.log

Als u het algemene zoeklogboek wilt inschakelen, voegt u het volgende toe

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Als u het logbestand voor trage zoekopdrachten wilt inschakelen, voegt u het volgende toe

log_slow_queries       = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

stap3:sla het bestand op en start mysql opnieuw met de volgende opdrachten

service mysql restart

Om logs tijdens runtime in te schakelen, logt u in op de mysql-client (mysql -u root -p) en geeft u:

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

Tot slot wil ik hier nog iets noemen: Ik lees dit van een blog. Bedankt. Het werkt voor mij.

Klik hierom de blog te bezoeken


Antwoord 2, autoriteit 27%

De MySQL-logboeken worden bepaald door de globale variabelen zoals:

  • log_errorvoor het foutenlogboek;
  • general_log_filevoor het algemene query-logbestand (indien ingeschakeld door general_log);
  • slow_query_log_filevoor het logbestand voor trage zoekopdrachten (indien ingeschakeld door slow_query_log);

Voer deze shell-opdracht uit om de instellingen en hun locatie te zien:

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

Voer deze opdracht in de terminal uit om de waarde van het foutenlogboek af te drukken:

mysql -e "SELECT @@GLOBAL.log_error"

Als u de inhoud van het foutenlogboekbestand in realtime wilt lezen, voert u het volgende uit:

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

Opmerking: druk op ControlCals je klaar bent

Als het algemene logboek is ingeschakeld, probeer dan:

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

Om gebruik te maken mysqlmet het wachtwoord toegang, add -pof -pMYPASSparameter. Om te houden onthouden, kun je het instellen in je ~/.my.cnf, bijv.

[client]
user=root
password=root

Dus het zal worden herinnerd voor de volgende keer.


Antwoord 3, Autoriteit 24%

U moet de query logging in mysql te activeren.

  1. bewerken /etc/my.cnf

    [mysqld]
    log = / tmp / mysql.log
    
  2. Start de computer of de mysqld dienst

    dienst mysqld restart
    
  3. geopend phpmyadmin / elke toepassing waarvoor mysql / mysql console en uitvoeren van een zoekopdracht

  4. cat /tmp/mysql.log(je moet de query te zien)


Antwoord 4, Autoriteit 5%

Van de MySQL-handleiding:

Standaard worden alle log bestanden worden gemaakt in de data-directory.

Controleer /var/lib/mysqlmap.


Antwoord 5, Autoriteit 5%

In mijn (ik heb LAMP geïnstalleerd) /etc/mysql/my.cnf bestand vond ik volgende, commentaar regels in de sectie [mysqld]:

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Ik moest dit bestand als superuser te openen, met terminal:

sudo geany /etc/mysql/my.cnf

(Ik geef de voorkeur aan Geany gebruiken in plaats van gedit of VI, het maakt niet uit)

Ik heb net commentaarkarakter hen & amp; sla het bestand vervolgens herstart MySQL met

sudo service MySQL restart

Voer verschillende zoekopdrachten uit, open het bovenstaande bestand (/var/log/mysql/mysql.log) en het logboek was daar 🙂


Antwoord 6, autoriteit 2%

Als aanvulling op het antwoord van loyolais het vermeldenswaard dat vanaf MySQL 5.1 log_slow_queriesis verouderd en wordt vervangen door slow-query-log

Als u log_slow_queriesgebruikt, zal uw service mysql restartof service mysql startmislukken


Antwoord 7

shell> mysqladmin flush-logs
shell> mv host_name.err-old backup-directory

Antwoord 8

In aanvulling op de bovenstaande antwoorden kunt u in opdrachtregelparameters doorgeven aan het mysqld-proces voor logboekopties in plaats van handmatig uw configuratiebestand te bewerken. Om bijvoorbeeld algemene logboekregistratie in te schakelen en een bestand op te geven:

mysqld --general-log --general-log-file=/var/log/mysql.general.log

Bevestiging van andere antwoorden hierboven, mysqld --help --verbosegeeft je de waarden uit het conf-bestand (dus draaien met command line-opties general-log is FALSE); terwijl mysql -se "SHOW VARIABLES" | grep -e log_error -e general_loggeeft:

general_log     ON
general_log_file        /var/log/mysql.general.log

Gebruik een iets compactere syntaxis voor het foutenlogboek:

mysqld --general-log --general-log-file=/var/log/mysql.general.log --log-error=/var/log/mysql.error.log

Other episodes