Saya mencoba mengikuti tutorial ini untuk mengaktifkan akses jarak jauh ke MySQL. Masalahnya adalah, di mana seharusnya my.cnf
file berada? Saya menggunakan Mac OS X Lion.
Saya mencoba mengikuti tutorial ini untuk mengaktifkan akses jarak jauh ke MySQL. Masalahnya adalah, di mana seharusnya my.cnf
file berada? Saya menggunakan Mac OS X Lion.
Jawaban:
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:
my.cnf
file mana pun yang Anda edit melaluimysql --verbose --help | grep my.cnf
Dalam kasus Mac OS X Maverick ketika MySQL diinstal melalui Homebrew itu terletak di /usr/local/opt/mysql/my.cnf
/usr/local/mysql/etc
. Saya menggunakan High Sierra tetapi telah menginstal beberapa versi kembali.
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
- GlobalSYSCONFDIR/my.cnf
- Global
SYSCONFDIR
mewakili direktori yang ditentukan denganSYSCONFDIR
opsiCMake
kapan 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_HOME
adalah variabel lingkungan yang berisi jalur ke direktori di manamy.cnf
file khusus server berada. JikaMYSQL_HOME
tidak disetel dan Anda memulai server menggunakanmysqld_safe
program,mysqld_safe
set keBASEDIR
, direktori instalasi basis MySQL.
file ditentukan dengan --defaults-extra-file=path
jika 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.
Lari: sudo fs_usage | grep my.cnf
Ini akan melaporkan setiap aktivitas sistem file secara real-time terkait dengan file itu.
Di Terminal lain, mulai ulang MySQL / MariaDB Anda, mis
brew services restart mysql
atau:
brew services restart mariadb
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.
sudo fs_usage | grep my.cnf
metode ini cukup efisien. Saya menemukan file ini di folder: /usr/local/etc/my.cnf
private/etc/my.cnf
, /usr/local/etc/my.cnf
, /usr/local/Cellar/mysql/<myVersion>/my.cnf
, ~.my.cnf
dengan my_print_def
di kolom paling kanan. Kemudian setelah beberapa saat hanya /usr/local/etc/my.cnf
dengan terminal saya di kolom paling kanan. Tetapi semua my.cnf
file ini tidak ada!
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:
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf
defaults-extra-file
(file ditentukan dengan --defaults-extra-file=path
, jika ada)~/.my.cnf
Untuk MySQL 5.7 di Mac OS X El Capitan: /usr/local/mysql/etc/my.cnf
Salin konfigurasi default dari /usr/local/mysql/support-files/my-default.cnf
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.cnf
kemudian dapat mengedit file untuk menambahkan mode sql dengan
sudo nano /{preferred-path}/my.cnf
Kemudian restart mysql, voilaah Anda baik untuk pergi. selamat coding
The paket MySQL saat ini untuk Mac OS X Mavericks (mysql-5.6.17-osx10.7-x86_64 pada saat tulisan ini) secara otomatis membuat my.cnf selama instalasi.
Itu terletak di /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Adaptasikan jalur Anda sesuai dengan versi Anda.
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>
/etc/my.cnf
Anda dapat membuka terminal dan mengetik locate my.cnf
Anda dapat membuat file di bawah direktori apa pun yang Anda inginkan. Setelah membuat, Anda dapat "memberi tahu" path ke konfigurasi mysql:
Anda dapat memeriksa file
/usr/local/bin/mysql.server
dan melihat dari mana my.conf
sedang dibaca.
Biasanya itu adalah dari /etc/my.cnf
atau ~/my.cnf
atau~/.my.cnf
~/.my.cnf
. Tambahkan titik sebelum nama file.
Buka Terminal dan gunakan perintah di bawah ini:
sudo find / -name my.cnf
Dokumen MySQL yang versi yang Anda gunakan akan membantu. Biasanya digambarkan sebagai a Options File
atau MySQL Config File
.
Dokumen memiliki lokasi file-file ini dalam dokumentasi, Serta VITAL
informasi lain seperti lokasi & contoh-contoh kecil seperti apa file konfigurasi tersebut.
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
Dimungkinkan untuk menggunakan
!include
arahan 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.ini
atau.cnf
.
Contoh cara menemukan lokasi file konfigurasi atau log Anda dll.:
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 '%\/%';
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
Jika Anda memerlukan Sampel Referensi terperinci my.cnf:
Tidak ada afiliasi / asosiasi dengan URL
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)
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.cnf
sebagai /etc/my.cnf
atau /etc/mysql/my.cnf
dan konfigurasi akan diambil saat restart.
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
/private/etc/my.cnf untuk Catalina
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
mysql --verbose --help | grep my.cnf
mana 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.
Untuk Mac, yang berhasil bagi saya adalah membuat file .my.cnf di path ~ saya. Semoga ini membantu.
Salin /usr/local/opt/mysql/support-files/my-default.cnf sebagai /etc/my.cnf atau /etc/mysql/my.cnf lalu restart mysql.
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.
/etc/mysql/my.cnf
tetapi MySQL Workbench tidak menyadarinya. Sebaliknya, ia mengeluh bahwa file konfigurasi dengan jalur kosong tidak dapat ditemukan dan kemudian menawarkan untuk membuat file baru.
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.
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
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.
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.