L'articolo trattava una configurazione di base del server MySQL® sul sistema operativo Ubuntu®. Descriveva come impostare la password di root, creare un database e aggiungere un utente per il database. Questo articolo esamina la configurazione di MySQL in modo un po' più dettagliato in modo che tu possa regolarne la configurazione ed essere pronto nel caso qualcosa vada storto.
Trova i file di configurazione
Per impostazione predefinita, puoi trovare i file di configurazione di MySQL® in:
/etc/mysql
Se non sono presenti, tuttavia, puoi utilizzare mysqld
per trovare la configurazione. Esegui il seguente comando:
$ /usr/sbin/mysqld --help --verbose
La prima parte della lunga risposta descrive le opzioni che puoi inviare al server quando lo avvii. La seconda parte mostra la configurazione impostata durante la compilazione del server.
Vicino all'inizio dell'output, trova un paio di righe simili al seguente esempio:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
Il server esamina tale elenco finché non trova un file di configurazione.
file di configurazione my.cnf
Apri ed esamina /etc/mysql/my.cnf file.
Righe di commento, che iniziano con # , documentare l'uso delle diverse impostazioni. Mostrano i dettagli sulla posizione di file di registro, file di database e altri dettagli.
Configura gruppi
Il file di configurazione contiene righe con una sola parola tra parentesi quadre, come [client] o [mysqld] .Queste sezioni sono gruppi di configurazione. Rendono gli elementi di configurazione importanti più visibili ai programmi che leggono il file di configurazione.
La sezione di configurazione del server è, tecnicamente, una raccolta di strumenti. Ciò include il server (mysqld
), il client (mysql
) e altri strumenti. Questi programmi cercano in my.cnf per vedere come dovrebbero comportarsi.
La sezione di configurazione del client controlla mysql
client e mysqld
la sezione controlla la configurazione del server.
File di registro
I file di registro sono il posto migliore per iniziare la risoluzione dei problemi di qualsiasi programma. Per impostazione predefinita, MySQL memorizza i suoi file di registro nella directory seguente:
/var/log/mysql
Potrebbe essere necessario utilizzare sudo
per ottenere un elenco dei file in quella directory.
Se non trovi i log di MySQL® nella directory predefinita, controlla la configurazione di MySQL. Visualizza my.cnf file e cerca un log_error
riga, come in:
log_error = /var/log/mysql/error.log
Se non vedi una riga del genere, creane una in mysqld sezione in modo che MySQL® possa utilizzare il proprio registro degli errori. Usa la posizione nell'esempio, creando il /var/log/mysql directory se non esiste già. Quindi, riavvia MySQL per apportare la modifica.
Assicurati che l'utente possa scrivere nella directory di registro scelta controllando mysql
processi. L'utente che esegue il processo è definito nella configurazione utente valore per mysqld in my.cnf .
Impostazioni di rete
Potrebbe esserci un'impostazione "porta" in entrambi i client e server sezioni di configurazione. La porta sotto il server la sezione controlla quale porta ascolta il server. La porta predefinita è 3306
ma puoi cambiarlo.
La porta nel client la sezione dice al client a quale porta connettersi per impostazione predefinita. In genere desideri che entrambe le impostazioni delle porte corrispondano.
Se stai utilizzando le impostazioni predefinite, non vedrai le voci della porta nel file di configurazione. Se vuoi cambiare la porta, aggiungi le seguenti righe nelle categorie appropriate:
[client]
port = 3306
[mysqld]
port = 3306
L'altra impostazione di rete da cercare è l'indirizzo di collegamento valore. Di solito viene impostato sull'indirizzo per localhost,127.0.0.1 . Collegandosi a localhost, il server garantisce che nessuno possa connettersi ad esso dall'esterno del computer locale.
Se stai eseguendo il tuo server MySQL su un computer diverso dalla tua applicazione, dovresti collegarti a un indirizzo accessibile in remoto anziché a localhost. Modifica l'impostazione dell'indirizzo di collegamento in modo che corrisponda al tuo indirizzo IP pubblico. Per motivi di sicurezza, dovresti utilizzare un indirizzo IP di back-end su una rete.
Se non vedi un indirizzo di rilegatura voce, dovresti inserirne uno in mysqld categoria per controllare l'accesso al server:
[mysqld]
$ bind-address = 127.0.0.1
Ricorda di tenere conto del nome host del client quando configuri gli utenti del database e di fornire l'accesso al firewall se stai eseguendo iptables
.
mysqld e mysqld_safe
Dietro le quinte, ci sono due versioni del server MySQL, mysqld
e mysqld_safe
. Entrambi leggono le stesse sezioni di configurazione. Tuttavia, mysqld_safe
viene lanciato con più funzioni di sicurezza abilitate per facilitare il ripristino dalla risoluzione dei problemi.
Entrambi mysqld
e mysqld_safe
leggi le voci di configurazione in mysqld sezione. Se includi un mysqld_safe sezione, quindi solo mysqld_safe utilizza quei valori.
Per impostazione predefinita, il servizio MySQL avvia mysqld_safe
, che è appropriato.
mysqladmin
Il mysqladmin
strumento consente di eseguire alcune funzioni amministrative dalla riga di comando, che questo articolo non affronta. È possibile esplorare lo strumento in modo più approfondito in seguito per vedere cosa può fare, in particolare se è necessario creare script che svolgano funzioni come il controllo dello stato del server o la creazione e l'eliminazione di database.
Backup
Hai le seguenti opzioni per eseguire il backup dei database, a parte il solito backup dell'intero computer approccio.Le due opzioni principali sono copiare i file del database o usare mysqldump
.
Copia file
Per impostazione predefinita, MySQL crea una directory per ogni database nella sua directory dei dati, /var/lib/mysql .
Dopo aver trovato la directory dei dati, attendere un momento prima di farne una copia. Quando il server di database è attivo, scrive nuovi valori nelle tabelle. Non interrompere questo processo per evitare di danneggiare potenzialmente il tuo backup.
Per assicurarti di aver copiato i file del database in modo pulito, dovresti spegnere completamente il server MySQL prima della copia.
Puoi bloccare il database come sola lettura per la durata della copia. Quando hai finito, rilascia il blocco. In questo modo, le tue applicazioni possono ancora leggere i dati mentre esegui il backup dei file.
Blocca i database in sola lettura eseguendo il seguente comando dalla riga di comando:
$ mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;"
Quando hai finito, esegui il comando seguente per sbloccare il database:
$ mysql -u root -p -e "UNLOCK TABLES;"
L'opzione del client MySQL, -e
, dice al client di eseguire la query tra virgolette come se l'avessimo inserita nella shell MySQL®.
Se stai scrivendo questi comandi in uno script, puoi mettere la password tra virgolette subito dopo -p
senza spazio tra i due, simile ai seguenti esempi:
$ mysql -u root -p"password" -e "FLUSH TABLES WITH READ LOCK;"
$ mysql -u root -p"password" -e "UNLOCK TABLES;"
Assicurati di impostare le autorizzazioni su quel file per limitare l'accesso in lettura per motivi di sicurezza della password.
mysqldump
Un altro approccio per eseguire il backup del database consiste nell'usare mysqldump
attrezzo. Invece di copiare direttamente i file del database, mysqldump
genera un file di testo che rappresenta il database. Per impostazione predefinita, il file di testo contiene un elenco di istruzioni SQL per ricreare il database, ma puoi anche esportare il database in un altro formato come .CSV o .XML . Puoi leggere la pagina man di mysqldump
per vedere tutte le sue opzioni.
Le istruzioni generate da mysqldump
vai direttamente allo standard output. Puoi specificare a per reindirizzare l'output eseguendo il comando seguente nella riga di comando:
$ mysqldump -u root -p demodb > dbbackup.sql
Questo comando dice a mysqldump
per ricreare il demodb database nelle istruzioni SQL e per scriverle nel filedbbackup.sql . Nota che le opzioni di nome utente e password funzionano allo stesso modo del client MySQL, quindi puoi includere la password direttamente dopo -p
in uno script.
Ripristina da mysqldump
Ripristino di un mysqldump
database è simile a come hai creato il dump, ma usi mysql
invece di mysqldump
,come mostrato nel seguente comando di ripristino:
$ mysql -u root -p demodb < dbbackup.sql
Inoltre, nota che il <
la parentesi angolare cambia direzione. Ciò cambia il comando dal reindirizzare il suo output all'estrazione di input dal file esistente. Quell'input viene inviato a mysql
comando, facendo in modo che le istruzioni ricreino il database.
Per impostazione predefinita, le istruzioni SQL generate si aggiungono alle tabelle del database esistenti e non le sovrascrivono. Se stai ripristinando un backup su un database esistente, dovresti prima eliminare le tabelle del database oppure eliminare e ricreare il database stesso. Puoi cambiare quel comportamento usando il $ --add-drop-table
opzione con il comando che crea il mysqldump
. Ciò causa mysqldump
per aggiungere un comando ai file di backup che scrive che elimina le tabelle prima di ricrearle.
Motore database
Il motore di database è il processo che funziona dietro le quinte, scrivendo e leggendo i dati dai file. Devi solo sapere questo se vuoi eseguire un'applicazione che è stata ottimizzata per un particolare motore di database.
Le applicazioni che necessitano di tabelle le creano su richiesta e creano automaticamente il tipo di motore. Per vedere il motore utilizzato dalle tabelle del database, puoi eseguire il comando seguente nella shell MySQL, cambiando demodb al nome del tuo database.:
$ SHOW TABLE STATUS FROM demodb;
Scegli un motore
Idealmente, non sarà necessario scegliere un motore. Se non hai molta familiarità con MySQL, consenti all'applicazione di sceglierne uno per impostazione predefinita. Se stai scrivendo l'applicazione, usa il motore predefinito finché non ti senti più a tuo agio con le tue opzioni.
Segui le istruzioni del tuo amministratore di database (DBA), se ne hai uno.
I due motori di database usati più spesso con MySQL sono MyISAM
e InnoDB
. Il motore di database predefinito per MySQL versione 5.1 e precedenti è MyISAM
, mentre InnoDB
è il motore di database predefinito a partire da MySQL versione 5.5.
MyISAM
Perché MyISAM
è stata l'impostazione predefinita in MySQL per un po', è la scelta più compatibile tra i due motori principali. Alcuni tipi di ricerche funzionano meglio su MyISAM
di InnoDB
. Anche se è il più vecchio dei due, potrebbe essere la scelta migliore per un determinato tipo di applicazione.
InnoDB
NOTA: Un DBA può aiutarti a ottenere il miglior InnoDB
prestazioni perché InnoDB
richiede molte modifiche all'ambiente e ai modelli di accesso. La configurazione predefinita è ottimale per l'uso quotidiano di sviluppo software.
InnoDB
è più tollerante ai guasti di MyISAM
e gestisce arresti anomali e ripristino con un rischio molto inferiore di danneggiamento del database.
Se la tua applicazione richiede InnoDB e stai usando MySQL 5.1 o versioni precedenti, potrebbero non esserci già impostazioni in my.cnf file di configurazione. Questo può essere un problema se stai utilizzando un server che non ha molta memoria.
Le seguenti impostazioni possono iniziare con InnoDB su un server condiviso con 256 mega di RAM:
innodb_buffer_pool_size = 32M
innodb_log_file_size = 8M
innodb_thread_concurrency = 8
innodb_file_per_table
Aggiungili a [mysqld] sezione del file di configurazione. Ancora una volta, quelle sono solo guide approssimative. Possono farti iniziare ma non sono ottimizzati. Consulta il tuo DBA o sperimenta modifiche incrementali nel tempo per migliorare le prestazioni.
Articoli correlati
- Installa il server MySQL® sul sistema operativo Ubuntu
- Reimposta una password di root MySQL®