MySQL dov'è il percorso my.cnf?


10

Sono riuscito a individuare la mia directory di installazione per MySQL: /usr/local/mysql/

Dove posso trovare il percorso my.cnfper sapere dove devo configurare il server? Ho provato a creare un /etc/my.cnf(come mostrato di seguito) e non ha avuto alcun effetto

[mysqld]

#charset
collation_server=utf8_general_ci
character_set_server=utf8
default_character_set=utf8

I dettagli sulla distro che stai usando sarebbero utili.
Tim

Abbastanza sicuro che debian / * buntu / rhel / cent non userebbe / usr / local da un'installazione di pacchetto. Sembra più lento o freebsd.
Tim

Risposte:


20

Secondo questo articolo :

L'esecuzione di questo comando dalla riga di comando / terminale mostrerà dove MySQL cercherà il file my.cnf su sistemi Linux / BSD / OS X:

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

Questo produrrà qualcosa del genere:

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 

È ora possibile verificare la presenza di file utilizzando l'output sopra riportato su /etc/my.cnf, quindi /etc/mysql/my.cnfe così via. Se non ce n'è uno in una di quelle posizioni, puoi crearne uno e sapere che MySQL lo utilizzerà.


3

Su un sistema Linux "individuare my.cnf" sarà la soluzione più veloce.

Se ci sono più file my.cnf, tutti in cerca probabile (ad esempio in /etc, /etc/mysql, /opt/mysql/etc, ecc), allora è possibile eseguire straceper vedere dove MySQL tenta binari per trovare il file di configurazione, ma io credo che sia un peso inutile.


Capisco -bash: locate: command not found... ci ho provato find / my.cnfma non trova nulla.
Webnet

Ciò presuppone che il tuo foundb sia stato aggiornato dalla creazione del file my.cnf. Di solito questo viene fatto quotidianamente tramite cron. Se è necessario aggiornarlo manualmente, eseguire "updatedb" come root
ckliborn il

locate: command not foundnon è un problema aggiornato, non ha il pacchetto.
Tim

installa il pacchetto "slocate".
TheCompWiz

2

OK uno scatto selvaggio nel buio:

Se il database è installato in /usr/local/mysql, quindi provare a cercare in /etc/localpermy.cnf

Ecco come puoi sapere se hai un my.cnf

Esegui questa query (<= 5.6.7)

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

O (>= 5.6.8)è passato allo schema delle prestazioni.

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';

Se dovessi ottenere:

Stai funzionando con i valori predefiniti e c'è la possibilità che non ci sia un my.cnfregalo.

NOTA:

A partire da MySQL 5.7.6, le informazioni disponibili dalle tabelle qui descritte sono disponibili anche dallo Schema delle prestazioni. Le tabelle INFORMATION_SCHEMA sono obsolete rispetto alle tabelle dello schema delle prestazioni e verranno rimosse in una versione futura di MySQL. Per consigli sulla migrazione dalle tabelle INFORMATION_SCHEMA alle tabelle dello schema delle prestazioni, consultare la Sezione 25.20, «Migrazione alle tabelle delle variabili di stato e di sistema dello schema delle prestazioni».


-bash: updatedb: command not found
Webnet

Aggiornato la mia risposta. Per favore riprova !!!
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

Come hai installato MySQL e su quale piattaforma?

Metodo della forza bruta su un sistema operativo unixoid:

find / -name my.cnf -print

Non l'ho installato, è su una macchina che ha alcuni anni. È Linux mars 2.6.5-7.147-bigsmp #1 SMP Thu Jan 27 09:19:29 UTC 2005 i686 i686 i386 GNU/Linux
attivo

1

strace -fe open /etc/init.d/mysql start 2>&1|grep my.cnf dovrebbe mostrarti la chiamata di sistema usata per aprire il file.


1

Sembra che il file creato dal tuo cnf venga sostituito da un altro. Guarda qui sotto l'ordine predefinito.

A partire dal

mysqld --verbose --help

Le opzioni predefinite vengono lette dai seguenti file nell'ordine indicato: /etc/my.cnf ~ / .my.cnf /etc/my.cnf


1

Come sei sicuro che il tuo file cnf non venga letto?

Hai riavviato mysqld dopo la modifica?

Hai provato a creare un nuovo db e ne hai guardato i valori?


0

Per installare individuare e aggiornare b per poterlo eseguire.

Usando fedora, centos funziona come root:

yum install mlocate

se stai eseguendo Ubuntu, esegui:

sudo apt-get install mlocate

Dopo aver completato l'installazione, esegui updateb Fedora (come root):

$updatedb 

Ubuntu:

sudo updatedb

quindi è possibile eseguire il comando Locate come elencato sopra. Anche in questo caso my.cnf si trova in genere in / etc. Sei sicuro che mysql sia installato? in caso contrario, eseguire i comandi sopra per installarlo e sostituire mlocate con mysqld buona fortuna!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.