Qui potrete trovare alcune utili applicazioni web che ho realizzato
Categoria: mysql
Provvedimento del garante sugli Amministratori di sistema
Premetto che la ritengo una gran cagata… e completamente inutile, visto che i log NON HANNO ALCUN VALORE PROBATORIO!
Ma visto che dobbiamo adeguarci… cerchiamo di farlo a COSTO ZERO!
Io ho risolto (sto risolvendo) così:
Installo rsyslog con logging su file sul logserver
Su un server linux CentOs 5.*
con
SYSLOGD_OPTIONS=”-m 0 -r”
local1.*,user.*,auth.*,authpriv.*,kern.* ?DynAuth
$EscapeControlCharactersOnReceive off
%msg:::space-cc%
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
local3.* /var/log/varie.log
Abilitare il logging su tutti i server linux
Su un qualsiasi server linux
auth.*;authpriv.*;local1.* @logserver.dominio
Abilitare il logging su Oracle 9i
chown -R oracle:dba /var/log/oracle/
SHOW PARAMETER audit
ALTER SYSTEM SET audit_trail=OS SCOPE=SPFILE;
ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET audit_file_dest=”/var/log/oracle” SCOPE=SPFILE;
AUDIT SESSION;
SHUTDOWN IMMEDIATE
startup
Abilitare il logging su Postgres
Modifico
/usr/local/pgsql/data/postgresql.conf
come segue:
log_destination = ‘syslog’
syslog_ident = ‘postgres’
log_disconnections = true
log_duration = true
Abilitare il logging su MySql
Nel file
/etc/my.cnf
nella sezione
[mysqld]
aggiungo
log=/var/log/mysql.log
Poi lancio all’avvio il seguente comando:
tail -f /var/log/mysql.log | egrep ‘Connect|Quit’ | logger -p LOCAL1.info -t mysql &
(ringrazio Stefano Coletta (http://www.mindcreations.com/) per la precisazione:
l’egrep va corredato dall’opzione –line-buffered altrimenti non funziona correttamente)
tail -f /var/log/mysql.log | egrep –line-buffered ‘Connect|Quit’ | logger -p LOCAL1.info -t mysql &
e lo salvo nell’ rc.local
e lo metto anche nella sezione postrotate del logrotate in
/etc/logrotate.d/mysql-log-rotate
Altrimenti, come suggeritomi dal buon Alessandro Corbelli di www.web4web.it si possono usare le named pipe:
http://www.linuxjournal.com/article/2156
http://www.linuxjournal.com/content/using-named-pipes-fifos-bash
Non loggo tutto su file ma ho creato una named pipe ed in inittab ho inserito, in respawn, uno script così composto
while [ true ]; do
tail -f <namedpipe> | egrep ‘Connect|Quit’ | logger…
done
Le prestazioni sono ‘abbastanza’ decenti.
Il while sarebbe anche superfluo…
Occorre fare attenzione a un particolare:
Se si utilizza la named pipe con lo script in inittab, nello script NON deve esserci il tail, ma il cat.
Quindi lo script diventa:
while [ true ]; do
cat <namedpipe> | egrep ‘Connect|Quit’ | logger -p LOCAL1.info -t mysql
done
Abilitare il logging sui server Windows
Sui server windows
Ho usato snare:
SnareSetup-3.1.5-MultiArch.exe
http://www.intersectalliance.com/projects/SnareWindows/index.html
Come “Destination snare server address” ho messo lo stesso ip del log server e come porta la 514
Abilitare il logging su Exchange
Gestore sistema Exchange -> Gruppi amministrativi -> <nome> -> server -> NomeServer -> tasto dx sul server -> registrazione Diagnostica
-> MSExchangeIS -> private o cassetta postale -> Accessi = minima; Controllo accessi = minima (oppure logons=minima e access control = minima)
Poi su snare:
Creo un nuovo oggetto:
Identify the high level event = Any event(s)
Event ID Search Term = 1009,1016,1013,1029
General Search Term = *
Select the User Match Type = Include
User Search Term = *admin*
Identify the event types to be captured = Success Audit + Failure Audit
Identify the event logs = Security + Application
Select the Alert Level = Critical
Abilitare il logging sul FileServer
Identify the high level event = Any event(s)
Event ID Search Term = 538,540,552,551,682,683,528
General Search Term = *
Select the User Match Type = Include
User Search Term = *admin*
Identify the event types to be captured = TUTTI
Identify the event logs = Security
Select the Alert Level = Critical
Immodificabilità dei log
Ogni notte, sul logserver, parte un cron che mi crea un md5 di tutti i file di log
Lo chiamo Z_calcola_md5.sh in modo che il cron lo chiama da ultimo DOPO il logrotate
cat /etc/cron.daily/Z_calcola_md5.sh
########################################
#!/bin/bash
TMP=`/bin/date –date=’1 days ago’ +%m/%d`
FILE_NAME=”MD5-`/bin/date –date=’1 days ago’ +%m-%d`.md5″
DEST_DIR01=”/var/log/TUTTI”
DEST_DIR=”$DEST_DIR01/$TMP/”
MD5_DIR=”/var/log/TUTTI/MD5/”
cd $MD5_DIR
find $DEST_DIR -type f -exec md5sum {} \; > $FILE_NAME
#########################################
A questo punto posso creare un tar.gz e salvare i log su un dvd o effettuarne un backup
Replicazione Database MySQL – Mysql replication
Sul MASTER:
ipotizzo che il master sia il 192.168.0.20
——————— /etc/my.cnf del Master 192.168.0.20 ————————————–
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size= 16M
log-slow-queries=/var/log/mysql-slow-queries.log
thread_concurrency = 8
log-warnings
server-id = 1
relay-log = /usr/local/mysql/data/mysql-relay-bin
relay-log-index = /usr/local/mysql/data/mysql-relay-bin.index
master-info-file = /usr/local/mysql/data/mysql-master.info
relay-log-info-file = /usr/local/mysql/data/mysql-relay-log.info
log-bin = /usr/local/mysql/data/mysql-bin
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
——————————————————————————————————————-
operazioni sul master:
mysql
GRANT SUPER,REPLICATION CLIENT,REPLICATION SLAVE,RELOAD ON *.* to slaveuser@’192.168.0.25′ identified by ‘slavepw’;
FLUSH PRIVILEGES;
——————— /etc/my.cnf dello Slave 192.168.0.25 ————————————–
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# changes made to do slave
server-id = 2
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
#log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
##datadir = /var/lib/mysql
master-host=192.168.0.20
# Nome con cui lo slave si presenta al master
report-host = 192.168.0.25
master-user=slaveuser
master-password=slavepw
#master-port=3300
master-connect-retry=30
# end slave setup
log-warnings
## Risolve un bug
skip-bdb
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
——————————————————————————————————————-
operazioni sullo Slave:
mysql -u root -p
> load data from master;
Problemi e soluzioni
Appena configurato il master-slave ho avuto i seguenti errori nei log e conseguenti problemi di replica master-slave
Error reading slave log configuration
080811 15:01:08 [ERROR] Error reading slave log configuration
080811 15:01:08 [ERROR] Failed to initialize the master info structure
Ho risolto stoppando lo slave, stoppando il master e cancellando dal master i file:
/usr/local/mysql/data/mysql-relay-bin
/usr/local/mysql/data/mysql-relay-bin.index
/usr/local/mysql/data/mysql-master.info
/usr/local/mysql/data/mysql-relay-log.info
/usr/local/mysql/data/mysql-bin
Saluti a tutti
Maurizio
I permessi di mysql
CREATE USER 'root'@'172.21.3.35' IDENTIFIED BY '';
GRANT ALL ON *.* TO 'root'@'172.21.3.35' WITH GRANT OPTION;
FLUSH PRIVILEGES;
ATTENZIONE:
In 4.1.x, you don’t need to use CREATE USER. Simply using GRANT to
grant privileges to a user implicitly “creates” the user.
Quindi per la versione 4.1 e precedenti:
GRANT ALL ON *.* TO 'root'@'172.21.3.35' WITH GRANT OPTION;
SET PASSWORD FOR 'root'@'172.21.3.35' = PASSWORD('mypass');
FLUSH PRIVILEGES;