MySql/MariaDB: scegliere il percorso dei database

1 risposta [Ultimo messaggio]
Ritratto di Duke
Duke
(Geek)
Offline
Geek
Iscritto: 13/10/2010
Messaggi: 57

Salve. Come certamente sapete, quando si installa MySql/MariaDB le impostazioni di default fanno si che i database vengano localizzati e gestiti tutti come sotto cartelle nella cartella /var/lib/mysql.
Questo, se ad alcuni può stare bene, ad altri potrebbe dar fastidio per diversi motivi, i più ovvi sono:
1) se per un malaugurato caso dovessi reinstallare l'intero sistema operativo, perderei anche i database;
2) normalmente la partizione di root è piuttosto limitata in termini di spazio, quindi non adatta ad ospitare database.
A tale scopo mi sono dato da fare in rete e ho trovato un tutorial che spiega come fare affinché MySql/MariaDB gestisca i database su una partizione disco diversa dalla root partition. Purtroppo non vi posso linkare direttamente l'articolo e mi dispiace sopratutto per riguardo all'autore, ma ho preso qualche appunto che riassumo di seguito nei seguenti passi.
Supponiamo quindi che si vuole fare in modo che MySql/MariaDB gestisca i database all'interno della cartella /home/mysql invece che in /var/lib/mysql (è superfluo dire che ciascun comando deve essere dato con le credenziali di amministratore):
1) innanzi tutto fermiamo il servizio di MySql, o da Yast -> Gestore dei servizi o con il comando:
#service mysql stop
2) editare il file /etc/my.cfn (con gedit, vi o quello che più si preferisce) modificando la variabile "datadir" che risulta commentata essendo preceduta da "#" perchè per default, come si è detto, la directory dei database è /var/lib/mysql, quindi bisogna eliminare il "#" e sostituire il valore con il nuovo percorso, che nel nostro esempio è /home/mysql, quindi:
datadir = /home/mysql
3) creiamo ovviamente la cartella /home/mysql e copiamo il contenuto di /var/lib/mysql nella nuova cartella /home/mysql:
#cp /var/lib/mysql/* /home/mysql -R
l'opzione -R copia anche le sotto cartelle e i file in esse contenuti
4) assegniamo alla nuova cartella i diritti di accesso, lettura e scrittura per l'utente di sistema mysql appartenente al gruppo mysql:
#chown mysql:mysql /home/mysql -R
l'opzione -R assegna i diritti anche alle sotto cartelle e ai file in esse contenuti
5) questo quinto passo sinceramente non l'ho capito, ma l'autore dell'articolo diceva che era necessario riassegnare dall'interno del servizio di mysql il diritto di ALL PRIVILEGES ai database, mi chiedo perchè dal momento che all'interno del server sql non si è toccato nulla in termini di diritti utente, comunque riporto l'istruzione così come l'ho ricopiata a suo tempo:
#mysql>GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'password di root';
dove 'password di root' è la password dell'utente root del server sql che potrebbe essere diversa dalla password di root del sistema.
Finito, si può fare ripartire il servizio di mysql, ancora o da Yast -> Gestore dei servizi o con il comando:
#service mysql start.
Probabilmente l'argomento era gia stato chiarito all'interno del forum, a me è sembrato importante quindi mi è parso giusto condividerlo.

Ritratto di max.riservo
max.riservo
(Geek)
Offline
Geek
Iscritto: 04/02/2012
Messaggi: 169

Duke ha scritto:


5) questo quinto passo sinceramente non l'ho capito, ma l'autore dell'articolo diceva che era necessario riassegnare dall'interno del servizio di mysql il diritto di ALL PRIVILEGES ai database, mi chiedo perchè dal momento che all'interno del server sql non si è toccato nulla in termini di diritti utente, comunque riporto l'istruzione così come l'ho ricopiata a suo tempo:
#mysql>GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'password di root';
dove 'password di root' è la password dell'utente root del server sql che potrebbe essere diversa dalla password di root del sistema.
Finito, si può fare ripartire il servizio di mysql, ancora o da Yast -> Gestore dei servizi o con il comando:
#service mysql start.

Sinceramente sfugge anche a me il motivo di questo passaggio, comunque, credo che ci sia un errore : per poter cambiare i privilegi di MySQL (secondo me) è necessario che MySQL sia in esecuzione quindi, prima lo start del sevizio MySQL e poi, dalla shell di MySQL (o tramite il workbench) il GRANT (che dovrebbe essere seguito da un FLUSH oppure da uno stop/start del servizio MySQL).
Come Duke resto comunque molto dubbioso sulla necessita di questa azione.

A volte sono presente anche in altri forum di programmazione ....