MySQL où est le chemin my.cnf?

10

J'ai réussi à localiser mon répertoire d'installation pour MySQL: /usr/local/mysql/

Où puis-je trouver le chemin pour my.cnfsavoir où je dois configurer le serveur? J'ai essayé de créer un /etc/my.cnf(comme indiqué ci-dessous) et cela n'a eu aucun effet

[mysqld]

#charset
collation_server=utf8_general_ci
character_set_server=utf8
default_character_set=utf8
Webnet
la source
Des détails sur la distribution que vous utilisez seraient utiles.
Tim
Je suis sûr que debian / * buntu / rhel / cent n'utiliserait pas / usr / local à partir d'une installation de paquet. Cela ressemble plus à du mou ou du freebsd.
Tim

Réponses:

20

Selon cet article :

L'exécution de cette commande à partir de la ligne de commande / du terminal indiquera où MySQL recherchera le fichier my.cnf sur les systèmes Linux / BSD / OS X:

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

Cela produira quelque chose comme ceci:

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 

Vous pouvez maintenant vérifier les fichiers en utilisant la sortie ci-dessus à /etc/my.cnf, puis /etc/mysql/my.cnfet ainsi de suite. S'il n'y en a pas à l'un de ces emplacements, vous pouvez en créer un et savoir que MySQL l'utilisera.

Erwin Mayer
la source
3

Sur un système Linux, "Locate my.cnf" sera la solution la plus rapide.

S'il y a plusieurs fichiers my.cnf, tous à la recherche probable (par exemple /etc, /etc/mysql, /opt/mysql/etc, etc.), vous pouvez exécuter stracepour voir où MySQL essaie binaires pour trouver son fichier de configuration, mais je pense que c'est un surpuissant.

Paweł Brodacki
la source
Je reçois -bash: locate: command not found... J'ai essayé find / my.cnfmais ça ne trouve rien.
Webnet
Cela suppose que votre locatedb a été mis à jour depuis la création du fichier my.cnf. Habituellement, cela se fait quotidiennement via cron. Si vous devez le mettre à jour, exécutez manuellement "updatedb" en tant que root
ckliborn
locate: command not foundn'est pas un problème mis à jourb, il n'a pas le paquet.
Tim
installez le paquet "slocate".
TheCompWiz
2

OK un tir sauvage dans le noir:

Si la base de données est installé dans /usr/local/mysql, puis essayez de regarder dans /etc/localpourmy.cnf

Voici comment savoir si vous avez un my.cnf

Exécutez cette requête (<= 5.6.7)

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

OU (>= 5.6.8)il est passé au schéma de performances.

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

Si vous devez obtenir:

Vous exécutez avec des valeurs par défaut et il est possible qu'il n'y ait pas de my.cnfcadeau.

REMARQUE:

Depuis MySQL 5.7.6, les informations disponibles dans les tableaux décrits ici sont également disponibles dans le schéma de performances. Les tables INFORMATION_SCHEMA sont obsolètes de préférence aux tables de schéma de performances et seront supprimées dans une future version de MySQL. Pour obtenir des conseils sur la migration des tables INFORMATION_SCHEMA vers les tables de schéma de performances, reportez-vous à la Section 25.20, «Migration vers le système de schémas de performances et les tables de variables d'état».

RolandoMySQLDBA
la source
-bash: updatedb: command not found
Webnet
Mis à jour ma réponse. Veuillez réessayer !!!
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

Comment avez-vous installé MySQL et sur quelle plateforme?

Méthode de la force brute sur un système d'exploitation unixoïde:

find / -name my.cnf -print
Sven
la source
Je ne l'ai pas installé, c'est sur une machine qui a quelques années. C'est surLinux 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 devrait vous montrer l'appel système utilisé pour ouvrir le fichier.

Nils
la source
1

Il semble que le fichier créé par votre cnf soit remplacé par un autre. Consultez l'ordre par défaut ci-dessous.

De

mysqld --verbose --help

Les options par défaut sont lues à partir des fichiers suivants dans l'ordre donné: /etc/my.cnf ~ / .my.cnf /etc/my.cnf

ckliborn
la source
1

Comment êtes-vous sûr que votre fichier cnf n'est pas lu?

Avez-vous redémarré mysqld depuis le changement?

Avez-vous essayé de créer une nouvelle base de données et examiné ses valeurs?

ckliborn
la source
0

Pour installer Locate et updatedb pour pouvoir l'exécuter ..

En utilisant fedora, les centos s'exécutent en tant que root:

yum install mlocate

si vous exécutez Ubuntu run:

sudo apt-get install mlocate

Une fois l'installation terminée, exécutez Fedora (en tant que root):

$updatedb 

Ubuntu:

sudo updatedb

vous pouvez alors exécuter la commande Locate comme indiqué ci-dessus. Encore une fois, le fichier my.cnf se trouve généralement dans / etc. Êtes-vous sûr que mysql est installé? sinon faites les commandes ci-dessus pour l'installer et remplacez mlocate par mysqld bonne chance!

J Baron
la source