Risposte:
Tre (3) opzioni
OPZIONE 1: dall'interno del client mysql
mysql -uroot -A -e"SHOW GLOBAL VARIABLES;" > MySQLCurrentSettings.txt
Ciò acquisirà tutte le opzioni nel file di testo.
OPZIONE 2: dalla riga di comando di Linux
ps -ef | grep mysqld | grep -v grep
Questo mostrerà le opzioni che mysqld è iniziata come impostato da mysqld_safe
OPZIONE 3: chiedere direttamente al server
mysqld --help --verbose
Nella parte inferiore del display 'mysqld --help --verbose', vedrai le impostazioni correnti mysqld caricate da my.cnf o predefinite su.
Queste istruzioni sono per lo stock mariadb su centos 7.1.
Ecco come eseguire il backup o replicare le impostazioni correnti di una macchina su una nuova installazione, presente o futura.
Sulla macchina da cui vogliamo copiare le impostazioni, possiamo eseguire:
/usr/libexec/mysqld --help --verbose > mysql_current_settings.txt
Su un altro computer, possiamo installare mariadb-server ed eseguire:
/usr/libexec/mysqld --help --verbose > mysql_default_settings.txt
Quindi inseriamo entrambi i file in una directory, che in questo esempio è "/ a /".
Quindi corriamo:
comm -3 <(sort /a/mysql_current_settings.txt) <(sort /a/mysql_default_settings.txt)
Se non viene generato alcun output, i due file sono identici. Ciò significa che tutte le impostazioni, su entrambe le macchine, sono predefinite.
Se c'è qualche output, allora alcune righe non saranno rientrate, mentre alcune righe saranno rientrate.
Le righe non rientrate sono presenti solo nel primo file, che qui è /a/mysql_current_settings.txt.
Le righe di rientro sono presenti solo nel secondo file, che qui è /a/mysql_default_settings.txt.
Ora conosciamo tutte le impostazioni, ad eccezione di alcune impostazioni impostate nella riga di comando che ha avviato mysqld. Queste impostazioni possono provenire dai file /etc/my.cnf o /etc/my.cnf.d/*, da uno script personalizzato o da un alias, ecc. In ogni caso, possiamo vederli con il seguente comando:
ps -ef | grep mysqld
Ora conosciamo le pochissime impostazioni che dobbiamo modificare in una nuova installazione per configurarla come quella precedente.
Ecco alcuni altri dettagli.
Su centos 7.1, il seguente comando mostra tutte le impostazioni correnti, ad eccezione di alcune impostazioni che sono state impostate nella riga di comando che ha avviato mysqld:
/usr/libexec/mysqld --help --verbose
In totale, mostra:
nella prima parte, le impostazioni che possiamo usare come primo parametro dopo "mysqld" quando lo avviamo;
nella seconda parte, le impostazioni vengono impostate al momento della compilazione;
nella terza parte, le impostazioni correnti.
Anche se l'ultima riga del suo output dice: per vedere quali valori sta usando un server MySQL in esecuzione, digitare:
mysqladmin variables -uroot -p
quel comando non mostra, fe, bind-address, anche se lo cambiamo in /etc/my.cnf e riavviamo mysql.
Inoltre, il seguente comando mostra molte impostazioni ma non "bind-address":
mysql -uroot -p -e"SHOW VARIABLES;"
Si noti che, su centos 7.1, mysqld non è in $ PATH.
Ecco il mio modo preferito per generare un my.cnf corrente:
{ echo -e "# MYSQL VARIABLES {{{1\n##\n# MYSQL `mysql -V|sed 's,^.*\(V.*\)\, for.*,\1,'` - By: `logname`@`hostname -f` on `date +%c`\n##"; for l in {a..z}; do echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" | sed 's,\t,^= ,' | column -ts^ | tr "\n" '@' | eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'") | eval $(echo "sed '" "s,@\(innodb_"{a..z}{a..z}"\),\n\n\1,;" "'") | tr '@' "\n" | sed 's,^,# ,g'; done; echo -e "#\n##\n# MYSQL VARIABLES }}}1"; } | tee ~/mysql-variables.log
Tuttavia, questo non funziona in modo affidabile per Mac OS X.
Questo produrrà un registro delle variabili pulito, commentato, pronto per l'importazione in my.cnf.
Fonte originale: http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html
mysqld -V|sed 's,^.*\(V.*\)\ for.*,\1,'. Non sono sicuro che sia importante poiché penso che sia il client che il server siano installati insieme. Qual è lo scopo di {{{1e 1}}}?