Lokasi file my.cnf di macOS


185

Saya mencoba mengikuti tutorial ini untuk mengaktifkan akses jarak jauh ke MySQL. Masalahnya adalah, di mana seharusnya my.cnffile berada? Saya menggunakan Mac OS X Lion.


Saya pikir ini milik serverfault.com. Tapi tetap saja, selamat datang di SO!
Artefact2

Jawaban:


253

Utas ini di forum MySQL mengatakan:

Secara default, instalasi OS X tidak menggunakan my.cnf, dan MySQL hanya menggunakan nilai default. Untuk mengatur my.cnf Anda sendiri, Anda bisa langsung membuat file di / etc.

OS X menyediakan contoh file konfigurasi di /usr/local/mysql/support-files/.

Dan jika Anda tidak dapat menemukannya di sana, MySQLWorkbench dapat membuatnya untuk Anda dengan:

  1. Membuka koneksi
  2. Memilih 'Opsi File' di bawah 'INSTANCE' di menu.
  3. MySQLWorkbench akan mencari my.cnf dan jika tidak dapat menemukannya, itu akan membuatnya untuk Anda

14
Setidaknya paket MySQL saat ini untuk Mac OS X (mysql-5.6.17-osx10.7-x86_64 pada saat tulisan ini) tidak pada kenyataannya membuat dan menggunakan my.cnf a. Letaknya di /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy

104
Anda mungkin ingin memastikan bahwa mysql benar-benar memuat my.cnffile mana pun yang Anda edit melaluimysql --verbose --help | grep my.cnf
ryantuck

3
Di Mac OS Sierra, itu belum diatur. Saya harus menyalin /usr/local/mysql/support-files/my-default.cnf ke my.cnf di direktori yang sama. Perhatikan bahwa mysql disinkronkan dengan paket, dalam kasus saya mysql-5.7.17-macos10.12-x86_64.
Christia

17
Baru saja melakukan instalasi MySQL 5.7.19 di Mac OS 10.12 menggunakan .dmg dari dev.mysql.com. Tidak ada my.cnf di salah satu tempat yang mysql --help bilang terlihat. Dan tidak ada my-default.cnf di / usr / local / mysql / support-file / atau di mana pun saya temukan. Ternyata "pada MySQL 5.7.18, my-default.cnf tidak lagi disertakan atau diinstal oleh paket distribusi" .
Chris Bartley

2
Jawaban ini sudah tua dan tergantung pada penginstal yang Anda gunakan untuk menginstal mysql. Homebrew menempatkannya di satu tempat, installer dmg menempatkannya di tempat lain
slashdottir

79

Dalam kasus Mac OS X Maverick ketika MySQL diinstal melalui Homebrew itu terletak di /usr/local/opt/mysql/my.cnf


6
yaitu /usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5

/ usr / local / opt / mariadb / VERSIONNUMBER / dalam kasus saya MariaDB diinstal
Steven Lizarazo

9
Milik saya di /usr/local/etc/my.cnf
Steve Tauber

1
Milik saya /usr/local/mysql/etc. Saya menggunakan High Sierra tetapi telah menginstal beberapa versi kembali.
Joshua Pinter

Anda adalah penyelamat hidup
Ishan Srivastava

56

Secara umum, pada sistem Unix dan Unix-like, program MySQL / MariaDB membaca file konfigurasi / startup di lokasi berikut (dalam urutan yang ditentukan):

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

    SYSCONFDIRmewakili direktori yang ditentukan dengan SYSCONFDIRopsi CMakekapan MySQL dibangun. Secara default, ini adalah direktori dll yang terletak di bawah direktori instalasi yang dikompilasi.

  • $MYSQL_HOME/my.cnf - Khusus server (hanya server)

    MYSQL_HOMEadalah variabel lingkungan yang berisi jalur ke direktori di mana my.cnffile khusus server berada. Jika MYSQL_HOMEtidak disetel dan Anda memulai server menggunakan mysqld_safeprogram, mysqld_safeset ke BASEDIR, direktori instalasi basis MySQL.

  • file ditentukan dengan --defaults-extra-file=pathjika ada

  • ~/.my.cnf - Khusus pengguna
  • ~/.mylogin.cnf - Khusus pengguna (hanya klien)

Sumber: Menggunakan File Opsi .

Catatan: Pada platform Unix, MySQL mengabaikan file konfigurasi yang dapat ditulis oleh dunia. Ini disengaja sebagai langkah pengamanan.


Selain itu di Mac ada cara sederhana untuk memeriksanya.

  1. Lari: sudo fs_usage | grep my.cnf

    Ini akan melaporkan setiap aktivitas sistem file secara real-time terkait dengan file itu.

  2. Di Terminal lain, mulai ulang MySQL / MariaDB Anda, mis

    brew services restart mysql

    atau:

    brew services restart mariadb
  3. Pada terminal dengan fs_usage, lokasi yang tepat harus ditunjukkan, mis

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

    Jadi jika file tersebut tidak ada, buat satu.


6
Terima kasih! yang sudo fs_usage | grep my.cnfmetode ini cukup efisien. Saya menemukan file ini di folder: /usr/local/etc/my.cnf
gary

3
Metode yang bagus, namun saya mendapatkan beberapa hasil sana: private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfdengan my_print_defdi kolom paling kanan. Kemudian setelah beberapa saat hanya /usr/local/etc/my.cnfdengan terminal saya di kolom paling kanan. Tetapi semua my.cnffile ini tidak ada!
Andru

@Andru Jika tidak ada, buat yang baru.
kenorb

1
Set instruksi terakhir Anda adalah sudo fs_usage | grep my.cnf adalah satu-satunya hal yang membantu saya di halaman ini, karena untuk beberapa alasan yang tidak diketahui mysqld tidak memuat dari lokasi default yang terdaftar melalui mysql -?
redbirdo

1
Perintah itu sudo fs_usage | grep my.cnf menyelamatkan hari saya, Terima kasih satu juta.
Shashikant Soni

33

Saya tidak tahu versi MySQL yang Anda gunakan, tetapi berikut adalah lokasi yang mungkin dari file my.cnf untuk versi 5.5 (diambil dari sini ) di 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(file ditentukan dengan --defaults-extra-file=path, jika ada)
  6. ~/.my.cnf


21

Jika Anda menggunakan macOS Sierra dan file tidak ada, jalankan

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

untuk melihat kemungkinan lokasi dan memuat / membaca urutan my.cnf untuk mysql kemudian membuat file my.cnf di salah satu direktori yang disarankan kemudian tambahkan baris berikut

[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

Anda sudo touch /{preferred-path}/my.cnfkemudian dapat mengedit file untuk menambahkan mode sql dengan

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

Kemudian restart mysql, voilaah Anda baik untuk pergi. selamat coding



12

Jadi tidak ada yang berhasil untuk saya. Saya menggunakan instalasi dmg saat ini dari server komunitas mysql. ps menunjukkan bahwa semua parameter paling kritis biasanya di my.cnf dilewatkan pada baris perintah, dan saya tidak tahu dari mana itu berasal. Setelah melakukan pencarian teks lengkap dari kotak saya, saya menemukannya di:

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

Jadi Anda bisa mengubahnya di sana, atau membawanya keluar sehingga itu benar-benar akan menghormati yang Anda miliki di my.cnf Anda di mana pun Anda memutuskan untuk meletakkannya.

Nikmati!

Contoh info file yang ditemukan dalam file itu:

<?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>

Bagus! kamu menyelamatkan hariku.
jenny

Saya memiliki kasus yang sama, tetapi saya juga harus menambahkan file my.cnf ke/etc/my.cnf
Eduard Mukans

11

Anda dapat membuka terminal dan mengetik locate my.cnf


Maaf tidak cukup spesifik, saya tampaknya perlu menyalin 'my-large.cnf' ke beberapa folder dan menamainya 'my.cnf'. Tapi saya tidak tahu ke mana ..
Nicolas

1
juga, Anda perlu memiliki db loc yang berpenghuni. di mac osx: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
arcseldon

10

Di mysql 5.6.22, yang saya instal dari Homebrew, jalur my.cnf adalah

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

10

macOs sierra 10.12.6 versi mysql: 5.7.18_1 Saya menjalankan loc my.cnf dan pathnya adalah

/usr/local/etc/my.cnf

semoga membantu.


pertimbangkan untuk menambahkan penjelasan pada asnwer Anda
Inder

@ charles.cc.hsu: coba gunakan perintah locate my.cnfpada terminal Anda. apa hasilnya?
aginanjar

6

Anda dapat membuat file di bawah direktori apa pun yang Anda inginkan. Setelah membuat, Anda dapat "memberi tahu" path ke konfigurasi mysql:

masukkan deskripsi gambar di sini


6

Anda dapat memeriksa file

/usr/local/bin/mysql.serverdan melihat dari mana my.confsedang dibaca.

Biasanya itu adalah dari /etc/my.cnfatau ~/my.cnfatau~/.my.cnf


Koreksi: ~/.my.cnf. Tambahkan titik sebelum nama file.
undefined

5

Untuk MAMP 3.5 Mac El Capitan, buat file konfigurasi kosong yang terpisah dan tulis pengaturan tambahan Anda untuk mysql

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

Dan Tambah seperti ini

[mysqld]
max_allowed_packet = 256M


4

BACA DOKS!

Dokumen MySQL yang versi yang Anda gunakan akan membantu. Biasanya digambarkan sebagai a Options Fileatau MySQL Config File.
Dokumen memiliki lokasi file-file ini dalam dokumentasi, Serta VITALinformasi lain seperti lokasi & contoh-contoh kecil seperti apa file konfigurasi tersebut.

MySQL Versi 8

MySQL Versi 5.7

MySQL Versi 5.6

MySQL Versi 5.5

MySQL Versi 5.6 Jepang

Catatan penting:

Pada platform Unix, MySQL mengabaikan file konfigurasi yang dapat ditulis oleh dunia.

Ini disengaja sebagai langkah pengamanan.

Dengan kata lain, jika Anda memiliki izin yang salah ditetapkan pada file konfigurasi Anda, TIDAK akan memuat.

Contoh izin pengaturan awal dari salah satu file konfigurasi:

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

catatan:

Dimungkinkan untuk menggunakan !includearahan dalam file opsi untuk memasukkan file opsi lain dan!includedir untuk mencari direktori tertentu untuk file opsi .....

... MySQL tidak memberikan jaminan tentang urutan file opsi dalam direktori akan dibaca ...

Setiap file dapat ditemukan dan termasuk menggunakan direktif! Includedir pada sistem operasi Unix harus memiliki nama file yang berakhir dengan .cnf. Di Windows, arahan ini memeriksa file dengan ekstensi .iniatau .cnf.

Contoh cara menemukan lokasi file konfigurasi atau log Anda dll.:

SQL

Ini tidak akan memperlihatkan kepada Anda file konfigurasi tetapi akan membantu Anda menemukan file / folder instalasi Anda.

MySQL Versi 5.7 & 8+

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

Versi 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

Kredit Perintah Di Atas Kepada: Erwin Mayer dari 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

ATAU

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

File Contoh

Jika Anda memerlukan Sampel Referensi terperinci my.cnf:

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

Tidak ada afiliasi / asosiasi dengan URL

Sistem saya:

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 "Opsi default" -A 1. ini membantu.
wandermonk

4

Saya menjalankan MacOS Catalina (10.15.3) dan mencari my.cnfdi /usr/local/etc.


2

Saya memeriksa di macOS Sierra, homebrew diinstal MySql 5.7.12

File dukungan terletak di

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

Cukup salin my-default.cnfsebagai /etc/my.cnfatau /etc/mysql/my.cnfdan konfigurasi akan diambil saat restart.


4
Saya baru saja menginstal 5.7.18 pada 12.12.4 via homebrew dan mereka tidak ada di sana.
norman_h

2

macOS High Sierra versi 10.13.6

mysql Ver 14.14 Distrib 5.7.22, untuk osx10.13 (x86_64) menggunakan EditLine wrapper Copyright (c) 2000, 2018, Oracle dan / atau afiliasinya. Seluruh hak cipta

Opsi default dibaca dari file berikut dalam urutan yang diberikan:

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


1

Saya menggunakan versi mysql 5.7.17 di macOS High Sierra versi 10.13.3 dan saya telah menemukan file konfigurasi mysql di sini.

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

Terima kasih atas tipnya menemukan file konfigurasi default. Catatan, ini hanya file templat sehingga Anda ingin menyalin ini ke lokasi yang ditemukan di mysql --verbose --help | grep my.cnfmana ia akan diambil, sesuai: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

biasanya di bawah /usr/local/etcmac jika Anda tidak menemukannya, Anda dapat membuatnya


0

Untuk Mac, yang berhasil bagi saya adalah membuat file .my.cnf di path ~ saya. Semoga ini membantu.


0

Salin /usr/local/opt/mysql/support-files/my-default.cnf sebagai /etc/my.cnf atau /etc/mysql/my.cnf lalu restart mysql.


0

Bagi saya dalam versi sierra

salin konfigurasi default di:

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

untuk

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


0

Dalam kasus saya, file tersebut tidak ada. Di MySQL Workbench saya pergi ke OPTIONS FILE dan menemukan beberapa nilai default. Saya mengklik berlaku. Ia meminta izin. Itu kemudian membuat file my.cnf di / etc. Namun, sangat penting untuk diingat bahwa pertama kali Anda mengklik "berlaku", Anda tidak membuat perubahan apa pun pada konfigurasi default. Setelah file dibuat, Anda dapat membuat perubahan yang akan diterapkan ketika Anda mengklik "berlaku". Kalau tidak, Anda tidak akan ditampilkan tombol berlaku ketika Anda membuat perubahan.


Saya punya file opsi di /etc/mysql/my.cnftetapi MySQL Workbench tidak menyadarinya. Sebaliknya, ia mengeluh bahwa file konfigurasi dengan jalur kosong tidak dapat ditemukan dan kemudian menawarkan untuk membuat file baru.
Alan Snyder

0

Setelah versi 5.7.18 dari MySQL, itu tidak menyediakan file konfigurasi default di direktori file dukungan. Jadi Anda dapat membuat file my.cnf secara manual di lokasi tempat MySQL akan membaca, seperti /etc/mysql/my.cnf, dan menambahkan konfigurasi yang ingin Anda tambahkan dalam file.


0

Opsi rDefault dibaca dari file-file berikut ini dalam urutan yang diberikan: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf


0

Saya menjalankan MacOS Mojave (10.14.6) dan untuk membuat MySQL mengenali file konfigurasi saya, saya harus meletakkannya di /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf. Juga saya memiliki tautan simbolis yang menunjuk dari /usr/local/@mysql/etc/my.cnf.

Saya mencoba untuk mematikan sql_mode = only_full_group_by dan menetapkan opsi itu dalam file konfigurasi adalah satu-satunya cara saya bisa mendapatkan pengaturan untuk bertahan di seluruh sesi. Isi file konfigurasi adalah:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

Saya menggunakan instalasi asli MySQL, bukan pengaturan Homebrew.


0

Untuk mysql 8.0.19, saya akhirnya menemukan my.cnf di sini: /usr/local/opt/mysql/.bottle/etc Saya menyalinnya ke / usr / local / opt / mysql / dan memodifikasinya. Lalu saya restart layanan mysql, berfungsi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.