This is a read-only copy of the MariaDB Knowledgebase generated on 2024-11-14. For the latest, interactive version please visit https://mariadb.com/kb/.

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. Quando mysqld_safe NLM libera la memoria e si arresta, lo schermo non va via per default. Invece chiede un input all'utente:
*<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.
  • --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.
  • --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.
  • --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!
  • --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 di mysqld_safe e uno di mysqld. Per specificare un suffisso per questi tag si può specificare --syslog-tag=tag, che modifica i tag trasformandoli in mysqld_safe-tag e mysqld-tag. Questa opzione è stata aggiunta in MySQL 5.1.21.
  • --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 esegue mysqld_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:

  1. Esegue un certo numero di controlli sul sistema e sulle opzioni.
  2. Esegue un controllo sulle tabelle MyISAM.
  3. Fornisce una presenza su schermo al server MariaDB.
  4. Avvia mysqld, esegue un monitoraggio e lo riavvia qualora esso termini con un errore.
  5. Invia i messaggi di errore che vengono da mysqld al file nome_host.err, nella directory dei dati.
  6. Invia l'output su schermo di mysqld_safe al file nome_host.safe, sempre nella directory dei dati.
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.