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

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.


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.


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».


-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

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.


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


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?


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!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.