GNU/Linux >> Linux Esercitazione >  >> Linux

Configura il server MySQL sul sistema operativo Ubuntu

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.

  • Installa il server MySQL® sul sistema operativo Ubuntu
  • Reimposta una password di root MySQL®

Linux
  1. Installa IMAP per PHP 7.1 sul sistema operativo Ubuntu

  2. Installa MySQL Server sul sistema operativo Ubuntu

  3. Pianifica i riavvii nel sistema operativo Ubuntu

  4. Configura host virtuali Apache sul sistema operativo Ubuntu

  5. Come configurare un database slave MySQL

La guida completa per installare MySQL su Ubuntu

Come modificare il nome host del server in Ubuntu

Come modificare il fuso orario su Ubuntu 18.04 Server?

Come installare e configurare un server Web LAMP su Ubuntu 18.04

Configura il legame di rete nel server Ubuntu

Ubuntu 19.04:Configura il server NTP