2009-11-10 10 views
6

Um meine MySQL Datenbank neu zu installieren, löschte ich /etc/my.cnfMySQL: Wie kann ich sehen, welche Konfigurationsdateien verwendet werden?

Aber was sind die Standardeinstellungen von MySQL? Und wie sehe ich, welche Konfigurationsdateien verwendet werden?

Ich kann sehen, mysql --help gibt mir eine Liste der aktuellen Einstellungen. Aber mein wirkliches Problem hier ist, dass ich local-infile und max_allowed_packet ändern möchte.

Der Hilfetext besagt auch, dass es aus den folgenden Dateien liest: /etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf. Aber keine von ihnen existiert:

> 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 

Kann ich eine neue Konfigurationsdatei erstellen, die nur diese Einstellungen enthält? Und am spezifischsten: Wie kann ich sehen, welche Konfigurationsdateien verwendet werden? Hier

ist die Ausgabe von 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

Nur angeben: Ich werde diese Frage beantwortet beantworten, wenn ich eine Antwort darauf: Wie sehe ich, welche Konfigurationsdateien verwendet werden? –

Antwort

4

Soweit ich weiß, gibt es keine Möglichkeit zu sehen, welche Konfigurationsdatei MySQL lesen, wenn es gestartet wurde. Wenn keine existiert, verwendet es einfach die Standardwerte, mit denen es kompiliert wurde. Hinweis, lesen Sie ist das operative Wort, hält MySQL die Konfigurationsdatei nicht länger geöffnet, als es dauert, um es zu analysieren.

Wenn Sie morbid neugierig sind, um die Reihenfolge der Dateien, die es sucht, zu überprüfen, können Sie einfach mysql über strace ausführen und beachten Sie die access() Systemaufrufe. Dies zeigt Ihnen die Reihenfolge, in der es kompiliert wurde, um nach seiner Konfiguration zu suchen, und eine Menge Dinge, die Sie wirklich nicht wissen wollten.

+0

Also ich denke, das bedeutet, es gibt keinen fairen Weg, um zu sehen, welche Dateien es von –

+0

@Jesper Rønn-Jensen gelesen hat - Kein konventioneller Weg (wie von mysql selbst zur Verfügung gestellt), aber es sollte nicht zu schwierig sein, es zu finden mit anderen Methoden aus. Wie culebrón sagte, sollte local-inifile mysql zwingen, ./my.cnf zu lesen, falls es existiert, oder ~/my.CNF, dann das System standardmäßig. Nur strace wird dir sagen, ob es das tatsächlich in der Reihenfolge tut, in der es wirbt, obwohl ich keinen Grund habe zu vermuten, dass es nicht sein wird. –

+0

Ich akzeptiere dies als die passendste Antwort. Vielen Dank, dass Sie sich die Zeit genommen haben, zu antworten. Das Kopfgeld ist am meisten verdient :) –

3

diese my.cnf Versuchen oder lädt mit einem Befehlszeilenparameter:

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

Es ist wichtig, dass die Parameter in der richtigen Abschnitten waren.

Wie ich verstehe, liest MySQL die Dateien in der von Ihnen geschriebenen Reihenfolge und verwendet dann die Standardwerte, die bei der Kompilierung festgelegt wurden.

+0

Also ich denke die Antwort ist: Es gibt keine Möglichkeit zu sehen, welche Konfigurationsdateien MySql verwendet? –

0

Die aufgelisteten Konfigurationsdateien werden nur gelesen, wenn sie offensichtlich existieren. Haben Sie versucht, /etc/my.cnf oder eines der anderen zu lesen, die nicht in Ihrem Home-Verzeichnis als root sind? Es überrascht mich, dass keiner von ihnen da ist.

Wie auch immer, Sie können eine der Dateien erstellen, z. B. ~/.my.cnf, und den Code einfügen, den culebrón gerade gepostet hat.

+0

Also ich denke die Antwort ist: Es gibt keine Möglichkeit zu sehen, welche Konfigurationsdateien MySql verwendet? –

Verwandte Themen