2009-11-10 2 views
6

Per reinstallare il mio database MySQL, ho eliminato /etc/my.cnfMySQL: come faccio a sapere quali file di configurazione sono usati?

Ma quali sono le impostazioni predefinite di MySQL? E come vedo quali file di configurazione sono in uso?

Vedo che mysql --help mi fornisce un elenco delle impostazioni correnti. Ma il mio vero problema qui è che voglio modificare local-infile e max_allowed_packet.

Il testo della guida indica anche che legge dai seguenti file: /etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf. Ma nessuno di essi esiste:

> cat /etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf 
cat: /etc/my.cnf: No such file or directory 
cat: /etc/mysql/my.cnf: No such file or directory 
cat: /opt/local/etc/mysql5/my.cnf: No such file or directory 
cat: /Users/jesper/.my.cnf: No such file or directory 

Posso creare un nuovo file di configurazione che contenga solo queste impostazioni? E in particolare: Come posso vedere quali file di configurazione sono in uso?

Ecco l'output mysql --help

> mysql --help 
mysql Ver 14.14 Distrib 5.1.40, for apple-darwin10.0.0 (i386) using readline 6.0 
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc. 

[...] 

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf 
The following groups are read: mysql client 
The following options may be given as the first argument: 
--print-defaults Print the program argument list and exit 
--no-defaults  Don't read default options from any options file 
--defaults-file=# Only read default options from the given file # 
--defaults-extra-file=# Read this file after the global files are read 

Variables (--variable-name=value) 
and boolean options {FALSE|TRUE} Value (after reading options) 
--------------------------------- ----------------------------- 
auto-rehash      TRUE 
character-sets-dir    (No default value) 
column-type-info     FALSE 
comments       FALSE 
compress       FALSE 
debug-check      FALSE 
debug-info      FALSE 
database       (No default value) 
default-character-set    latin1 
delimiter       ; 
vertical       FALSE 
force        FALSE 
named-commands     FALSE 
ignore-spaces      FALSE 
local-infile      FALSE 
no-beep       FALSE 
host        (No default value) 
html        FALSE 
xml        FALSE 
line-numbers      TRUE 
unbuffered      FALSE 
column-names      TRUE 
sigint-ignore      FALSE 
port        0 
prompt       mysql> 
quick        FALSE 
raw        FALSE 
reconnect       TRUE 
socket       (No default value) 
ssl        FALSE 
ssl-ca       (No default value) 
ssl-capath      (No default value) 
ssl-cert       (No default value) 
ssl-cipher      (No default value) 
ssl-key       (No default value) 
ssl-verify-server-cert   FALSE 
table        FALSE 
user        (No default value) 
safe-updates      FALSE 
i-am-a-dummy      FALSE 
connect_timeout     0 
max_allowed_packet    16777216 
net_buffer_length     16384 
select_limit      1000 
max_join_size      1000000 
secure-auth      FALSE 
show-warnings      FALSE 
+1

Solo per specificare: considererò la risposta a questa domanda quando avrò una risposta a questo: come posso vedere quali file di configurazione sono in uso? –

risposta

4

Per quanto ne so, non c'è modo di vedere quale file di configurazione MySQL legge all'avvio. Se nessuno esiste, utilizza semplicemente i valori di default con cui è stato compilato. Nota, leggi essendo la parola chiave, MySQL non mantiene il file di configurazione aperto più del necessario per analizzarlo.

Se si è morbosamente curiosi di verificare l'ordine dei file che cerca, è sufficiente eseguire mysql tramite strace e prendere nota delle chiamate di sistema access(). Questo ti mostrerà l'ordine che è stato compilato da seguire durante la ricerca della sua configurazione, e un sacco di cose che davvero non volevi sapere.

+0

Quindi, suppongo che questo significhi che non esiste un modo giusto per vedere quali file ha letto la sua configurazione da –

+0

@Jesper Rønn-Jensen - Nessun modo convenzionale (come previsto da mysql stesso), tuttavia non dovrebbe essere troppo difficile da capire fuori con altri metodi. Come sottolineato da Culebrón, local-inifile dovrebbe forzare mysql a leggere ./my.cnf se esiste, o ~/my.cnf, quindi i valori di default del sistema. Solo strace ti dirà se, in effetti lo sta facendo nell'ordine in cui pubblicizza, anche se non ho motivo di sospettare che non lo sarebbe. –

+0

Im accettando questo come la risposta più adatta. Grazie mille per aver dedicato del tempo a rispondere. La taglia è la più meritata :) –

3

Prova questo my.cnf o caricarlo con un parametro di riga di comando:

[mysqld] 
max_allowed_packet = 16M 
[client] 
local-infile=1 

E 'importante che i parametri erano nelle sezioni appropriate.

Come ho capito, MySQL legge i file nella sequenza che hai scritto e quindi utilizza i valori di default che sono stati impostati alla compilazione.

+0

Quindi immagino che la risposta sia: non c'è modo di vedere quali file di configurazione utilizza MySql? –

0

I file di configurazione elencati vengono letti solo se esistono, ovviamente. Hai provato a leggere /etc/my.cnf o uno degli altri che sono non nella tua home directory come root? Mi sorprende che nessuno di loro ci sia.

In ogni caso, è possibile creare uno dei file, ad esempio ~/.my.cnf, e includere il codice che culebrón ha appena pubblicato.

+0

Quindi immagino che la risposta sia: non c'è modo di vedere quali file di configurazione utilizza MySql? –