mysqld_safe
mysqld_safe
è il modo consigliato per avviare un server mysqld su Unix e NetWare. mysqld_safe
aggiunge alcune caratteristiche di sicurezza, come il riavvio del server nel caso in cui avvenga un errore e il logging a runtime in un file di log degli errori. Le descrizioni degli errori registrati nel log e i comportamenti specifici di NetWare sono presenti più avanti in questa sezione.
Nota: In MySQL 5.1.20 (soltanto), per default mysqld_safe
scrive gli errori nel syslog, nei sistemi che supportano il programma logger. Ciò differisce dal comportamento di predefinito delle altre versioni, che consiste nello scrivere un file di log degli errori.
In 5.1.20, il logging nel syslog in alcuni casi potrebbe non funzionare correttamente; se questo avviene, si usi:
--skip-syslog
per usare il file di log di default, oppure
--log-error=//nome_file//
per specificare esplicitamente un nome per il file di log.
mysqld_safe
tenta di avviare un eseguibile chiamato mysqld. Per modificare questo comportamento predefinito e specificare esplicitamente il nome del server da lanciare, si passi l'opzione --mysqld
o --mysqld-version
a mysqld_safe
. Si può anche usare --ledir
per indicare la directory nella quale mysqld_safe
dovrà cercare il server server.
Molte delle opzioni di mysqld_safe
sono identiche a quelle di mysqld.
Le opzioni sconosciute a mysqld_safe
, se sono specificate da riga di comando vengono passate a mysqld, ma se sono specificate nel gruppo [mysqld_safe
] di un file di configurazione vengono ignorate.
mysqld_safe
legge tutte le opzioni dalle sezioni [mysqld], [server] e [mysqld_safe
] dei file delle opzioni. Per esempio, se si specifica una sezione [mysqld] come la seguente, mysqld_safe
è in grado di trovare e usare l'opzione --log-error
:
[mysqld] log-error=error.log
Per compatibilità all'indietro, mysqld_safe
legge anche le sezioni [safe_mysqld], però è meglio rinominare tali sezioni di [mysqld_safe
] in MySQL 5.1.
mysqld_safe Options
mysqld_safe
supporta le seguenti opzioni:
--help
- Mostra un messaggio di help e termina.
--autoclose
- (solo su NetWare) Su NetWare,
mysqld_safe
fornisce una presenza su schermo. Quandomysqld_safe
NLM libera la memoria e si arresta, lo schermo non va via per default. Invece chiede un input all'utente:
- (solo su NetWare) Su NetWare,
*<NLM has terminated; Press any key to close the screen>*
Se si desidera che NetWare chiuda lo schermo automaticamente, si può usare l'opzione --autoclose
di mysqld_safe
.
--basedir=percorso
- Il percorso della directory di installazione di MariaDB.
--core-file-size=dimensioni
- Le dimensioni del file principale che mysqld deve poter creare. Il valore di questa opzione viene passato a ulimit -c.
--datadir=percorso
- Il percorso della directory dei dati.
--defaults-extra-file=percorso
- Il nome di un file delle opzioni da leggere in aggiunta agli altri. Se si usa questa opzione, bisogna specificarla per prima nella riga di comando. Se il file non esiste o è per qualche ragione inaccessibile, il server si arresta con un errore.
--defaults-file=nome_file
- Il nome di un file delle opzioni da leggere invece degli altri. Se si usa questa opzione, bisogna specificarla per prima nella riga di comando.
--ledir=percorso
- Se
mysqld_safe
non riesce a trovare il server, con questa opzione è possibile indicare il percorso della directory in cui esso si trova.
- Se
--log-error=nome_file
- Write the error log to the given file.
--mysqld=nome_prog
- Il nome del programma server (nella directory ledir) che deve essere avviato. Questa opzione è necessario per usare le distribuzioni binarie di MySQL/MariaDB in cui la directory dei dati si trova fuori dalla distribuzione stessa. Se
mysqld_safe
non riesce a trova il server, si usa l'opzione--ledir
per indicare il percorso della directory dove si trova il server.
- Il nome del programma server (nella directory ledir) che deve essere avviato. Questa opzione è necessario per usare le distribuzioni binarie di MySQL/MariaDB in cui la directory dei dati si trova fuori dalla distribuzione stessa. Se
--mysqld-version=suffisso
- Questa opzione è simile a
--mysqld
, ma si specifica solo un suffisso da aggiungere al nome del programma server. Il nome di base sarà mysqld. Per esempio, se si specifica--mysqld-version=debug
,mysqld_safe
avvia il programma mysqld-debug nella directory ledir. Se l'argomento di--mysqld-version
è vuoto,mysqld_safe
avvia mysqld nella directory ledir.
- Questa opzione è simile a
--nice=priorità
- Usa il programma nice per impostare la priorità del server al valore indicato, nello scheduler.
--no-defaults
- Non legge alcun file delle opzioni. Questa opzione, se viene usata, deve essere specificata per prima nella riga di comando.
--open-files-limit=numero
- Il numero di file che mysqld deve poter aprire simultaneamente. Il valore dell'opzione viene passato a ulimit -n. Si noti che occorre avviare
mysqld_safe
come root perché questa opzione funzioni correttamente!
- Il numero di file che mysqld deve poter aprire simultaneamente. Il valore dell'opzione viene passato a ulimit -n. Si noti che occorre avviare
--pid-file=nome_file
- Il percorso del file process ID.
--port=num_porta
- Il numero della porta che il server dovrà usare per accettare connessioni TCP/IP. Tale numero dovrà essere 1024 o superiore, a meno che il server sia avviato dall'utente root.
--skip-kill-mysqld
- Non cerca di terminare i processi mysqld eventualmente esistenti al momento dell'avvio. Questa opzione funziona solo su Linux.
--socket=path
- Il file di socket Unix che deve essere usato dal server per ascoltare le connessioni locali.
--syslog, --skip-syslog
--syslog
Fa sì che i messaggi di errore vengano avviati al syslog sui sistemi che supportano il programma logger.--skip-syslog
disabilita syslog: i messaggi vengono scritti nel file di log degli errori. Queste opzioni sono state aggiunte in MySQL 5.1.20.
--syslog-tag=tag
- Nel logging in syslog, i messaggi da
mysqld_safe
e mysqld sono scritti rispettivamente con un tag dimysqld_safe
e uno di mysqld. Per specificare un suffisso per questi tag si può specificare--syslog-tag=tag
, che modifica i tag trasformandoli inmysqld_safe
-tag e mysqld-tag. Questa opzione è stata aggiunta in MySQL 5.1.21.
- Nel logging in syslog, i messaggi da
--timezone=timezone
- Imposta la variabile di ambiente TZ (fuso orario) al valore specificato. Si consulti la documentazione del proprio sistema operativo per conosce i formati con cui è possibile specificare la time zone.
--user={nome_utente|id_utente}
- Esegue il server mysqld con l'utente corrispondente al nome_utente o all'id_utente specificato. "Utente", in questo contesto, si riferisce al login di sistema, non all'utente di MariaDB presente nelle tabelle dei permessi.
Se si esegue mysqld_safe
con l'opzione --defaults-file
o --defaults-extra-file
per specificare un file di configurazione, tale opzione deve essere specificata per prima nella riga di comando, altrimenti non verrà usato il file delle opzioni desiderato. Per esempio questo comando non userà il file nome_file:
mysql> mysqld_safe --port=num_porta --defaults-file=nome_file
Occorre quindi scrivere il comando come segue:
mysql> mysqld_safe --defaults-file=nome_file --port=num_porta
Lo script mysqld_safe
è stato realizzato in modo da poter avviare, in condizioni normali, un server che sia stato installato da una distribuzione binaria o sorgente, anche se questi tipi di distribuzioni installano il server in percorsi leggermente diversi. (Si veda Section 2.1.5, “Installation Layouts”.)
mysqld_safe
si aspetta che una delle due seguenti condizioni sia vera:
- Il server e i database possono essere trovati facendo riferimento alla directory di lavoro (quella da cui
mysqld_safe
è stato invocato). Nelle distribuzioni binarie,mysqld_safe
cerca le cartelle bin e data sotto la sua directory di lavoro. Nelle distribuzioni sorgenti, cerca invece le cartelle libexec e var. Questa condizione viene soddisfatta se si eseguemysqld_safe
dalla directory di installazione di MariaDB (ad esempio, /usr/local/mysql per le distribuzioni binarie). - Se non è possibile trovare il server e i database partendo dalla directory di lavoro,
mysqld_safe
tenta di localizzarli attraverso dei persorsi assoluti. Tipici percorsi in cui vengono cercati sono/usr/local/libexec
e/usr/local/var
. I percorsi effettivi sono determinati dai valori che sono stati configurati nella distribuzione al momento della compilazione. Essi dovrebbero essere esatti se MariaDB è stata installata nel percorso specificato al momento della configurazione.
Siccome mysqld_safe
tenta di trovare il server e i database relativamente alla sua directory di lavoro, è possibile installare una distribuzione binaria ovunque, purché si esegua mysqld_safe
dalla directory di installazione di MariaDB:
shell> cd mysql_installation_directory shell> bin/mysqld_safe &
Se mysqld_safe
fallisce, anche quando invocato dalla directory di MariaDB, si può specificare le opzioni --ledir
e --datadir
per indicare in quali directory si trovano il server e i database.
E' possibile utilizzare mysqld_safe
per avviare mysqld, mysqld_safe
fa in modo che i suoi messaggi di errore (e le note), e quelli generati da mysqld siano rediretti alla medesima destinazione.
A partire da MySQL 5.1.20, esistono diverse opzioni per controllare la destinazione dei messaggi:
--syslog
: Scrive i messaggi di errore nel syslog nei sistemi che supportano il programma logger.--skip-syslog
: Non scrive i messaggi di errore nel syslog, ma nel file di log degli errori predefinito (host_name.err nella directory dei dati), o nel file indicato, se viene specificata una opzione--log-error
.--log-error=nome_file
: Scrive i messaggi di errore nel file di log specificato.
Se nessuna di queste opzioni è presente, quella predefinita è --skip-syslog
.
Nota: Solo in MySQL 5.1.20, il default è --syslog
. Questo comportamento differisce da quello delle altre versioni, nelle quali il default è scrivere i messaggi nel file di log degli errori predefinito.
Se --syslog
e --log-error
sono specificate entrambe, viene generato un warning e --log-error
avrà la precedenza.
Quando mysqld_safe
scrive un messaggio, le note vanno alla destinazione del logging (syslog oppure log degli errori) e a stdout. Gli errori vanno al logging e a stderr.
Prima di MySQL 5.1.20, il log degli errori era controllato solo dall'opzione --log-error
. Se questa veniva specificata, i messaggi andavano al file di log specificato; altrimenti andavano al file di log predefinito.
Normalmente, è meglio non modificare lo script mysqld_safe
. Invece, si può configurare mysqld_safe
passando le opzioni da riga di comando o inserendole nella sezione [mysqld_safe
] di un file my.cnf. In rare occasioni, potrebbe essere necessario modificare mysqld_safe
per permettergli di avviare il server nel modo corretto. Tuttavia, se si fa questo, la versione modificata di mysqld_safe
potrebbe essere sovrascritta quando si aggiorna MySQL/MariaDB in un futuro, perciò è bene farne una copia che si potrà poi reinstallare.
Su NetWare, mysqld_safe
è un NetWare Loadable Module (NLM) portato dallo script Unix originale. Avvia il server nel modo seguente:
- Esegue un certo numero di controlli sul sistema e sulle opzioni.
- Esegue un controllo sulle tabelle MyISAM.
- Fornisce una presenza su schermo al server MariaDB.
- Avvia mysqld, esegue un monitoraggio e lo riavvia qualora esso termini con un errore.
- Invia i messaggi di errore che vengono da mysqld al file nome_host.err, nella directory dei dati.
- Invia l'output su schermo di
mysqld_safe
al file nome_host.safe, sempre nella directory dei dati.