Emplacement du fichier my.cnf sur macOS


185

J'essaie de suivre ce tutoriel pour activer l'accès à distance à MySQL. Le problème est, où le my.cnffichier doit-il être situé? J'utilise Mac OS X Lion.


Je pense que cela appartient à serverfault.com. Mais quand même, bienvenue dans SO!
Artefact2

Réponses:


253

Ce fil sur le forum MySQL dit:

Par défaut, l'installation d'OS X n'utilise pas de my.cnf et MySQL utilise uniquement les valeurs par défaut. Pour configurer votre propre my.cnf, vous pouvez simplement créer un fichier directement dans / etc.

OS X fournit des exemples de fichiers de configuration sur /usr/local/mysql/support-files/ .

Et si vous ne pouvez pas les trouver là-bas, MySQLWorkbench peut les créer pour vous en:

  1. Ouverture d'une connexion
  2. Sélectionner le 'Fichier d'options' sous 'INSTANCE' dans le menu.
  3. MySQLWorkbench recherchera my.cnf et s'il ne le trouve pas, il le créera pour vous

14
Au moins le package MySQL actuel pour Mac OS X (mysql-5.6.17-osx10.7-x86_64 au moment de cette écriture) ne en fait créer et utiliser un my.cnf. Il est situé à /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy

104
vous voudrez peut-être vous assurer que mysql se charge réellement dans le my.cnffichier que vous éditez viamysql --verbose --help | grep my.cnf
ryantuck

3
Sur Mac OS Sierra, il n'était pas déjà configuré. J'ai dû copier /usr/local/mysql/support-files/my-default.cnf dans my.cnf dans le même répertoire. Notez que mysql est lié symboliquement au paquet, dans mon cas mysql-5.7.17-macos10.12-x86_64.
Christia

17
Je viens de faire une installation propre de MySQL 5.7.19 sur Mac OS 10.12 en utilisant le .dmg de dev.mysql.com. Il n'y a pas de my.cnf dans aucun des endroits où mysql --help dit qu'il cherche. Et il n'y a pas de my-default.cnf dans / usr / local / mysql / support-files / ou ailleurs que j'ai trouvé. Il s'avère que "depuis MySQL 5.7.18, my-default.cnf n'est plus inclus ou installé par les packages de distribution" .
Chris Bartley du

2
Cette réponse est ancienne et dépend du programme d'installation que vous avez utilisé pour installer mysql. Homebrew le met à un endroit, l'installateur de dmg en met un autre
slashdottir

79

Dans le cas de Mac OS X Maverick lorsque MySQL est installé via Homebrew, il se trouve à /usr/local/opt/mysql/my.cnf


6
qui est /usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5

/ usr / local / opt / mariadb / VERSIONNUMBER / dans mon cas, MariaDB est installée
Steven Lizarazo

9
Le mien est dans /usr/local/etc/my.cnf
Steve Tauber

1
Le mien l'était /usr/local/mysql/etc. Je suis sur High Sierra mais il a été installé il y a quelques versions.
Joshua Pinter

vous êtes un sauveur de vie
Ishan Srivastava

56

En général, sur les systèmes Unix et de type Unix, les programmes MySQL / MariaDB lisent les fichiers de configuration / de démarrage aux emplacements suivants (dans l'ordre spécifié):

  • /etc/my.cnf - Global
  • /etc/mysql/my.cnf - Global
  • SYSCONFDIR/my.cnf - Global

    SYSCONFDIRreprésente le répertoire spécifié avec l' SYSCONFDIRoption de CMakequand MySQL a été construit. Par défaut, il s'agit du répertoire etc situé sous le répertoire d'installation compilé.

  • $MYSQL_HOME/my.cnf - Spécifique au serveur (serveur uniquement)

    MYSQL_HOMEest une variable d'environnement contenant le chemin d'accès au répertoire dans lequel my.cnfréside le fichier spécifique au serveur . Si MYSQL_HOMEn'est pas défini et que vous démarrez le serveur à l'aide du mysqld_safeprogramme, mysqld_safedéfinissez-le sur BASEDIRle répertoire d'installation de base de MySQL.

  • fichier spécifié avec le --defaults-extra-file=pathcas échéant

  • ~/.my.cnf - Spécifique à l'utilisateur
  • ~/.mylogin.cnf - Spécifique à l'utilisateur (clients uniquement)

Source: Utilisation de fichiers d'options .

Remarque: sur les plates-formes Unix, MySQL ignore les fichiers de configuration inscriptibles dans le monde entier. C'est intentionnel comme mesure de sécurité.


De plus, sur Mac, il existe un moyen simple de le vérifier.

  1. Courir: sudo fs_usage | grep my.cnf

    Cela rapportera toute activité du système de fichiers en temps réel liée à ce fichier.

  2. Dans un autre terminal, redémarrez votre MySQL / MariaDB, par exemple

    brew services restart mysql

    ou:

    brew services restart mariadb
  3. Sur le terminal avec fs_usage, l'emplacement approprié doit être indiqué, par exemple

    15:52:22  access            /usr/local/Cellar/mariadb/10.1.14/my.cnf                                         0.000002   sh          

    Donc, si le fichier n'existe pas, créez-en un.


6
Merci! la sudo fs_usage | grep my.cnfméthode est assez efficace. Je trouve ce fichier dans le dossier: /usr/local/etc/my.cnf
gary

3
Bonne méthode, mais je reçois plusieurs résultats là: private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfavec my_print_defdans la colonne de droite. Ensuite, après un certain temps, c'est uniquement /usr/local/etc/my.cnfavec mon terminal dans la colonne la plus à droite. Mais tous ces my.cnffichiers n'existent pas!
Andru

@Andru Si aucun d'entre eux n'existe, créez-en un nouveau.
kenorb

1
Votre dernière série d'instructions concernant sudo fs_usage | grep my.cnf a été la seule chose qui m'a aidé sur cette page, car pour une raison inconnue, mysqld ne se chargeait pas à partir des emplacements par défaut répertoriés via mysql -?
redbirdo

1
Cette commande sudo fs_usage | grep my.cnf a sauvé ma journée, merci un million.
Shashikant Soni le

33

Je ne sais pas quelle version de MySQL vous utilisez, mais voici les emplacements possibles du fichier my.cnf pour la version 5.5 (pris à partir d' ici ) sur Mac OS X:

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. SYSCONFDIR/my.cnf
  4. $MYSQL_HOME/my.cnf
  5. defaults-extra-file(le fichier spécifié avec --defaults-extra-file=path, le cas échéant)
  6. ~/.my.cnf


21

Si vous utilisez macOS Sierra et que le fichier n'existe pas, exécutez

mysql --help or mysql --help | grep my.cnf

pour voir les emplacements possibles et la séquence de chargement / lecture de my.cnf pour mysql puis créez le fichier my.cnf dans l'un des répertoires suggérés puis ajoutez la ligne suivante

[mysqld] sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Vous pouvez sudo touch /{preferred-path}/my.cnfensuite modifier le fichier pour ajouter le mode SQL en

sudo nano /{preferred-path}/my.cnf

Ensuite, redémarrez mysql, voilaah vous êtes prêt à partir. bon codage


13

Le package MySQL actuel pour Mac OS X Mavericks (mysql-5.6.17-osx10.7-x86_64 au moment de la rédaction de cet article) crée automatiquement un my.cnf lors de l'installation.

Il se trouve dans /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Adaptez votre chemin en fonction de votre version.


12

Donc, aucune de ces choses n'a fonctionné pour moi. J'utilise l'installation dmg actuelle du serveur de communauté mysql. ps montre que tous les paramètres les plus critiques normalement dans my.cnf sont passés sur la ligne de commande, et je ne pouvais pas comprendre d'où cela venait. Après avoir effectué une recherche en texte intégral de ma boîte, je l'ai trouvée dans:

/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Vous pouvez donc soit les modifier ici, soit les supprimer afin qu'il respecte réellement ceux que vous avez dans votre my.cnf où que vous ayez décidé de le mettre.

Prendre plaisir!

Exemple d'informations sur le fichier trouvées dans ce fichier:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--user=_mysql</string>
            <string>--basedir=/usr/local/mysql</string>
            <string>--datadir=/usr/local/mysql/data</string>
            <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
            <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
             <string>--keyring-file-data=/usr/local/mysql/keyring/keyring</string>
             <string>--early-plugin-load=keyring_file=keyring_file.so</string>

        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>

génial! tu as sauvé ma journée.
jenny

J'ai eu le même cas, mais j'ai également dû ajouter /etc/my.cnf
mon fichier.cnf

11

Vous pouvez ouvrir un terminal et saisir locate my.cnf


Désolé de ne pas être assez précis, j'ai apparemment besoin de copier «my-large.cnf» dans un dossier et de le renommer «my.cnf». Mais je ne sais pas où ..
nicolas

1
vous devez également disposer d'une base de données de localisation remplie. sur mac osx: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
arcseldon

10

Dans mysql 5.6.22, que je l'ai installé à partir de Homebrew, le chemin de my.cnf est

/usr/local/opt/mysql/my.cnf 

10

macOs sierra 10.12.6 version mysql: 5.7.18_1 Je lance localiser my.cnf et le chemin est

/usr/local/etc/my.cnf

espérons que cela vous aidera.


pensez à ajouter une explication à votre réponse
Inder

@ charles.cc.hsu: essayez d'utiliser la commande locate my.cnfsur votre terminal. quel est le résultat?
aginanjar le

6

Vous pouvez créer votre fichier dans le répertoire de votre choix. Après la création, vous pouvez "indiquer" le chemin vers la configuration mysql:

entrez la description de l'image ici


6

Vous pouvez vérifier le fichier

/usr/local/bin/mysql.server et voir d'où my.conf vient la lecture.

Habituellement, il s'agit de /etc/my.cnfou ~/my.cnfou~/.my.cnf


Correction: ~/.my.cnf. Ajoutez un point avant le nom du fichier.
undefined

5

Pour MAMP 3.5 Mac El Capitan, créez un fichier de configuration vide séparé et écrivez vos paramètres supplémentaires pour mysql

sudo vim /Applications/MAMP/Library/my.cnf

Et ajouter comme ça

[mysqld]
max_allowed_packet = 256M

5

Ouvrez le terminal et utilisez la commande ci-dessous:

sudo find / -name my.cnf

4

LISEZ LES DOCUMENTS!

Les documents MySQL pour la version que vous utilisez vous aideront. Il est généralement décrit comme un Options Fileou MySQL Config File.
Les documents ont l'emplacement de ces fichiers dans la documentation, ainsi que d'autres VITALinformations comme l'emplacement et de petits exemples de ce à quoi le fichier de configuration doit ressembler.

MySQL version 8

MySQL version 5.7

MySQL version 5.6

MySQL version 5.5

MySQL version 5.6 japonais

Notes IMPORTANTES:

Sur les plates-formes Unix, MySQL ignore les fichiers de configuration inscriptibles dans le monde entier.

C'est intentionnel comme mesure de sécurité.

En d'autres termes, si vous avez les mauvaises autorisations définies sur votre fichier de configuration, le fichier ne se chargera PAS.

Exemple d'autorisation de configuration initiale de l'un des fichiers de configuration:

RIZZOMBP$ ls -lah /etc/my.cnf
-rw-r--r--  1 myusername  wheel     0B Feb 25 20:40 /etc/my.cnf

Remarque:

Il est possible d'utiliser des !includedirectives dans les fichiers d'options pour inclure d'autres fichiers d'options et!includedir de rechercher des répertoires spécifiques pour les fichiers d'options .....

... MySQL ne donne aucune garantie sur l'ordre dans lequel les fichiers d'options du répertoire seront lus ...

Tous les fichiers à rechercher et à inclure à l'aide de la directive! Includedir sur les systèmes d'exploitation Unix doivent avoir des noms de fichiers se terminant par .cnf. Sous Windows, cette directive recherche les fichiers avec l' extension .iniou .cnf.

Exemples de comment trouver votre emplacement de vos fichiers de configuration ou journaux ect:

SQL

Cela ne vous montrera pas le fichier de configuration mais vous aidera à localiser vos fichiers / dossiers d'installation.

MySQL version 5.7 et 8+

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

Version MySQL <= 5.6

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

SHELL / Terminal

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

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

Crédit de commande ci-dessus à: Erwin Mayer de ServerFault

RIZZOMBP$ mysqld --verbose --help | grep '/my.cnf' -B 1

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

OU

RIZZOMBP$ ps aux | grep -i mysqld | grep -v $USER

_mysql 106 0.4 2.5 4232336 422112 ?? Ss 7:01PM 0:57.12
/usr/local/mysql/bin/mysqld
--user=_mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
--plugin-dir=/usr/local/mysql/lib/plugin
--log-error=/usr/local/mysql/data/mysqld.local.err
--pid-file=/usr/local/mysql/data/mysqld.local.pid
--keyring-file-data=/usr/local/mysql/keyring/keyring
--early-plugin-load=keyring_file=keyring_file.so

Exemple de fichier

Si vous avez besoin d'un exemple de référence détaillé my.cnf:

  1. https://gist.github.com/search?utf8=%E2%9C%93&q=my.cnf+mysql&ref=searchresults
  2. https://www.linode.com/community/questions/5749/mysql-sample-config-files
  3. https://www.fromdual.com/mysql-configuration-file-sample

Aucune affiliation / association aux URL

Mon système:

RIZZOMBP$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.3
BuildVersion:   18D109
RIZZOMBP$ mysql -V
mysql  Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)
RIZZOMBP$ mysqld -V
/usr/local/mysql-8.0.15-macos10.14-x86_64/bin/mysqld 
Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)

mysql --help | grep "Options par défaut" -A 1. cela a aidé.
wandermonk

4

J'utilise MacOS Catalina (10.15.3) et je trouve my.cnfdans /usr/local/etc.


2

J'ai vérifié dans macOS Sierra, l'homebrew installé MySql 5.7.12

Les fichiers de support se trouvent sur

/usr/local/opt/mysql/support-files

Copiez simplement my-default.cnfcomme /etc/my.cnfou /etc/mysql/my.cnfet la configuration sera récupérée au redémarrage.


4
Je viens d'installer 5.7.18 sur 12.12.4 via homebrew et ils ne sont pas là.
norman_h

2

macOS High Sierra version 10.13.6

mysql Ver 14.14 Distrib 5.7.22, pour osx10.13 (x86_64) utilisant le wrapper EditLine Copyright (c) 2000, 2018, Oracle et / ou ses affiliés. Tous les droits sont réservés

Les options par défaut sont lues à partir des fichiers suivants dans l'ordre indiqué:

/etc/my.cnf 
/etc/mysql/my.cnf 
/usr/local/etc/my.cnf 
~/.my.cnf


1

J'utilise mysql version 5.7.17 dans macOS High Sierra version 10.13.3 et j'ai trouvé le fichier de configuration mysql ici.

cd /usr/local/mysql/support-files/my-default.cnf

Merci pour le conseil sur la recherche du fichier de configuration par défaut. Notez qu'il ne s'agit que d'un fichier de modèle, vous voudrez donc le copier dans un emplacement mysql --verbose --help | grep my.cnfoù il sera récupéré, comme suit:DO NOT EDIT THIS FILE. It's a template which will be copied to the default location during install, and will be replaced if you upgrade to a newer version of MySQL.
Joshua Pinter

1

il devrait être généralement sous /usr/local/etcsur mac si vous ne le trouvez pas, vous pouvez en créer un


0

Pour Mac, ce qui a fonctionné pour moi est de créer un fichier .my.cnf dans mon chemin ~. J'espère que cela t'aides.


0

Copiez /usr/local/opt/mysql/support-files/my-default.cnf comme /etc/my.cnf ou /etc/mysql/my.cnf puis redémarrez mysql.


0

Pour moi en version sierra

copiez la configuration par défaut sur:

/usr/local/Cellar/mysql/5.6.27/support-files/my-default.cnf

à

/usr/local/Cellar/mysql/5.6.27/my.cnf


0

Dans mon cas, le fichier n'existait pas. Dans MySQL Workbench, je suis allé dans OPTIONS FILE et j'ai trouvé des valeurs par défaut. J'ai cliqué sur appliquer. Il a demandé la permission. Il a ensuite créé le fichier my.cnf sous / etc. Cependant, il est très important de garder à l'esprit que la première fois que vous cliquez sur «appliquer», vous n'apportez aucune modification à la configuration par défaut. Une fois le fichier créé, vous pouvez apporter des modifications qui seront appliquées lorsque vous cliquez sur «appliquer». Sinon, le bouton Appliquer ne s'affichera pas lorsque vous apporterez des modifications.


J'ai un fichier d'options sur /etc/mysql/my.cnfmais MySQL Workbench n'en est pas conscient. Au lieu de cela, il se plaint que le fichier de configuration avec un chemin vide est introuvable et propose ensuite de créer un nouveau fichier.
Alan Snyder

0

Après la version 5.7.18 de MySQL, il ne fournit pas le fichier de configuration par défaut dans le répertoire support-files. Vous pouvez donc créer manuellement le fichier my.cnf à l'emplacement où MySQL sera lu, comme /etc/mysql/my.cnf, et ajouter la configuration que vous souhaitez ajouter dans le fichier.


0

Les options rDefault sont lues à partir des fichiers suivants dans l'ordre indiqué: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf


0

J'utilise MacOS Mojave (10.14.6) et pour que MySQL reconnaisse mon fichier de configuration, j'ai dû le placer dans /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf. J'ai également un lien symbolique pointant vers celui-ci depuis /usr/local/@mysql/etc/my.cnf.

J'essayais de désactiver sql_mode = only_full_group_by et définir cette option dans le fichier de configuration était le seul moyen pour que le paramètre persiste à travers les sessions. Le contenu du fichier de configuration est:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

J'utilise l'installation native de MySQL, pas la configuration Homebrew.


0

Pour mysql 8.0.19, j'ai finalement trouvé le my.cnf ici: /usr/local/opt/mysql/.bottle/etc Je l'ai copié dans / usr / local / opt / mysql / et l'ai modifié. Ensuite, je redémarre le service mysql, cela fonctionne.

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.