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_error
voor het foutenlogboek;general_log_file
voor het algemene query-logbestand (indien ingeschakeld doorgeneral_log
);slow_query_log_file
voor het logbestand voor trage zoekopdrachten (indien ingeschakeld doorslow_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 Control–Cals 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 mysql
met het wachtwoord toegang, add -p
of -pMYPASS
parameter. 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.
-
bewerken /etc/my.cnf
[mysqld] log = / tmp / mysql.log
-
Start de computer of de mysqld dienst
dienst mysqld restart
-
geopend phpmyadmin / elke toepassing waarvoor mysql / mysql console en uitvoeren van een zoekopdracht
-
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/mysql
map.
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_queries
is verouderd en wordt vervangen door slow-query-log
Als u log_slow_queries
gebruikt, zal uw service mysql restart
of service mysql start
mislukken
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 --verbose
geeft 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_log
geeft:
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