MySQL Wo ist der Pfad my.cnf?

10

Ich habe es geschafft, mein Installationsverzeichnis für MySQL zu finden: /usr/local/mysql/

Wo finde ich den Pfad, um my.cnfzu erfahren, wo ich den Server konfigurieren soll? Ich habe versucht, ein /etc/my.cnf(wie unten gezeigt) zu erstellen , und es hatte keine Auswirkungen

[mysqld]

#charset
collation_server=utf8_general_ci
character_set_server=utf8
default_character_set=utf8
Webnet
quelle
Einzelheiten zu der von Ihnen verwendeten Distribution wären hilfreich.
Tim
Ziemlich sicher, dass debian / * buntu / rhel / cent nicht / usr / local aus einer Paketinstallation verwenden würde. Das klingt eher nach Slack oder Freebsd.
Tim

Antworten:

19

Gemäß diesem Artikel :

Wenn Sie diesen Befehl über die Befehlszeile / das Terminal ausführen, wird angezeigt, wo MySQL auf Linux / BSD / OS X-Systemen nach der Datei my.cnf sucht:

mysql --help | grep "Default options" -A 1 

Dies gibt ungefähr Folgendes aus:

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 

Sie können jetzt mit der obigen Ausgabe nach Dateien suchen /etc/my.cnf, dann /etc/mysql/my.cnfund so weiter. Wenn es an einem dieser Standorte keinen gibt, können Sie einen erstellen und wissen, dass MySQL ihn verwendet.

Erwin Mayer
quelle
3

Auf einem Linux-System ist "find my.cnf" die schnellste Lösung.

Wenn es mehrere my.cnf - Dateien sind, alle auf der Suche wahrscheinlich ( zum Beispiel in /etc, /etc/mysql, /opt/mysql/etc, etc.), dann können Sie laufen , straceum zu sehen , wo MySQL - Binärdatei versucht , seine Konfigurationsdatei zu finden, aber ich denke , das ist zuviel des Guten.

Paweł Brodacki
quelle
Ich verstehe -bash: locate: command not found... ich habe es versucht, find / my.cnfaber es findet nichts.
Webnet
Dies setzt voraus, dass Ihr Standortb seit der Erstellung der Datei my.cnf aktualisiert wurde. Normalerweise erfolgt dies täglich über Cron. Wenn Sie es manuell aktualisieren müssen, führen Sie "updatedb" als root
ckliborn
locate: command not foundist kein aktualisiertes Problem, er hat das Paket nicht.
Tim
Installieren Sie das Paket "slocate".
TheCompWiz
2

OK, ein wilder Schuss im Dunkeln:

Wenn die Datenbank installiert ist /usr/local/mysql, suchen Sie /etc/localnachmy.cnf

Hier erfahren Sie, ob Sie eine haben my.cnf

Führen Sie diese Abfrage aus (<= 5.6.7)

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');

ODER (>= 5.6.8)es wurde in das Leistungsschema verschoben.

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW GLOBAL VARIABLES LIKE 'innodb_log_file_size';

Wenn Sie bekommen sollten:

Sie verwenden Standardeinstellungen und es besteht die Möglichkeit, dass kein my.cnfGeschenk vorhanden ist.

HINWEIS:

Ab MySQL 5.7.6 sind Informationen aus den hier beschriebenen Tabellen auch aus dem Leistungsschema verfügbar. Die INFORMATION_SCHEMA-Tabellen sind gegenüber den Performance Schema-Tabellen veraltet und werden in einer zukünftigen MySQL-Version entfernt. Hinweise zur Migration von den Tabellen INFORMATION_SCHEMA zu den Tabellen des Leistungsschemas finden Sie in Abschnitt 25.20, „Migration zu Tabellen des Leistungsschemasystems und der Statusvariablen“.

RolandoMySQLDBA
quelle
-bash: updatedb: command not found
Webnet
Meine Antwort wurde aktualisiert. Bitte versuche es erneut !!!
RolandoMySQLDBA
/usr/bin/which: no updatedb in (/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/java/bin:/usr/local/apache2/bin:/usr/local/firefox:/usr/local/mysql/bin:/usr/games:/usr/local/fetter/bin)
Webnet
1

Wie haben Sie MySQL installiert und auf welcher Plattform?

Brute-Force-Methode unter einem unixoiden Betriebssystem:

find / -name my.cnf -print
Sven
quelle
Ich habe es nicht installiert, es befindet sich auf einer Maschine, die ein paar Jahre alt ist. Es ist aufLinux mars 2.6.5-7.147-bigsmp #1 SMP Thu Jan 27 09:19:29 UTC 2005 i686 i686 i386 GNU/Linux
Webnet
1

strace -fe open /etc/init.d/mysql start 2>&1|grep my.cnf sollte Ihnen den Systemaufruf anzeigen, der zum Öffnen der Datei verwendet wird.

Nils
quelle
1

Es scheint, als würde die von Ihrem CNF erstellte Datei durch eine andere ersetzt. Schauen Sie sich die Standardreihenfolge unten an.

Von

mysqld --verbose --help

Standardoptionen werden aus den folgenden Dateien in der angegebenen Reihenfolge gelesen: /etc/my.cnf ~ / .my.cnf /etc/my.cnf

ckliborn
quelle
1

Wie stellen Sie sicher, dass Ihre cnf-Datei nicht gelesen wird?

Haben Sie mysqld seit der Änderung neu gestartet?

Haben Sie versucht, eine neue Datenbank zu erstellen, und sich deren Werte angesehen?

ckliborn
quelle
0

Um zu installieren, lokalisieren und aktualisiertb, um es ausführen zu können ..

Mit Fedora werden Centos als Root ausgeführt:

yum install mlocate

Wenn Sie Ubuntu ausführen, führen Sie Folgendes aus:

sudo apt-get install mlocate

Nachdem Sie die Installation abgeschlossen haben, führen Sie updateb Fedora (als root) aus:

$updatedb 

Ubuntu:

sudo updatedb

Anschließend können Sie den Befehl find wie oben aufgeführt ausführen. Wieder befindet sich die my.cnf normalerweise in / etc. Sind Sie sicher, dass MySQL installiert ist? Wenn nicht, führen Sie die obigen Befehle aus, um es zu installieren und mlocate durch mysqld zu ersetzen. Viel Glück!

J Baron
quelle