MySQL di mana jalur my.cnf?

10

Saya telah berhasil menemukan direktori instal saya untuk MySQL: /usr/local/mysql/

Di mana saya dapat menemukan jalur my.cnfuntuk mengetahui di mana saya harus mengkonfigurasi server? Saya sudah mencoba membuat /etc/my.cnf(seperti yang ditunjukkan di bawah) dan tidak berpengaruh

[mysqld]

#charset
collation_server=utf8_general_ci
character_set_server=utf8
default_character_set=utf8
Webnet
sumber
Khusus tentang distro yang Anda gunakan akan sangat membantu.
Tim
Cukup yakin debian / * buntu / rhel / cent tidak akan menggunakan / usr / local dari instalasi paket. Kedengarannya lebih seperti slack atau freebsd.
Tim

Jawaban:

20

Sesuai artikel ini :

Menjalankan perintah ini dari baris perintah / terminal akan menunjukkan di mana MySQL akan mencari file my.cnf di sistem Linux / BSD / OS X:

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

Ini akan menampilkan sesuatu seperti ini:

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 

Anda sekarang dapat memeriksa file menggunakan output di atas di /etc/my.cnf, lalu /etc/mysql/my.cnfdan seterusnya. Jika tidak ada satu di salah satu lokasi itu, Anda dapat membuat satu dan tahu MySQL akan menggunakannya.

Erwin Mayer
sumber
3

Pada sistem Linux, cari my.cnf "akan menjadi solusi tercepat.

Jika ada beberapa file my.cnf, semua mencari kemungkinan (misalnya dalam /etc, /etc/mysql, /opt/mysql/etc, dll), maka Anda dapat menjalankan straceuntuk melihat di mana MySQL mencoba biner untuk menemukan file konfigurasi, tapi saya pikir itu berlebihan.

Paweł Brodacki
sumber
Saya mendapatkan -bash: locate: command not found... Saya sudah mencoba find / my.cnftetapi tidak menemukan apa pun.
Webnet
Ini mengasumsikan bahwa basa Anda telah diperbarui sejak file my.cnf dibuat. Biasanya ini dilakukan setiap hari melalui cron. Jika Anda perlu memperbaruinya secara manual jalankan "updatedb" sebagai root
ckliborn
locate: command not foundbukan masalah updatedb, ia tidak memiliki paket.
Tim
instal paket "slocate".
TheCompWiz
2

OK tembakan liar dalam gelap:

Jika database dipasang di /usr/local/mysql, kemudian mencoba mencari di /etc/localuntukmy.cnf

Di sini adalah bagaimana Anda dapat mengetahui apakah Anda memiliki my.cnf

Jalankan kueri ini (<= 5.6.7)

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

ATAU (>= 5.6.8)itu pindah ke skema kinerja.

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

Jika Anda harus mendapatkan:

Anda berjalan dengan default dan ada kemungkinan tidak ada my.cnfhadiah.

CATATAN:

Pada MySQL 5.7.6, informasi yang tersedia dari tabel yang dijelaskan di sini juga tersedia dari Skema Kinerja. Tabel INFORMATION_SCHEMA sudah usang karena preferensi ke tabel Skema Kinerja dan akan dihapus dalam rilis MySQL di masa depan. Untuk saran tentang migrasi jauh dari tabel INFORMATION_SCHEMA ke tabel Skema Kinerja, lihat Bagian 25.20, “Migrasi ke Sistem Skema Kinerja dan Tabel Variabel Status”.

RolandoMySQLDBA
sumber
-bash: updatedb: command not found
Webnet
Memperbarui jawaban saya. Silakan coba lagi !!!
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

Bagaimana Anda menginstal MySQL dan pada platform apa?

Metode brute force pada OS unixoid:

find / -name my.cnf -print
Sven
sumber
Saya tidak menginstalnya, itu pada mesin yang berumur beberapa tahun. Sudah aktifLinux 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 harus menunjukkan kepada Anda panggilan sistem yang digunakan untuk membuka file.

Nils
sumber
1

Sepertinya file cnf Anda dibuat sedang digantikan oleh yang lain. Lihat urutan default hte di bawah ini.

Dari

mysqld --verbose --help

Opsi default dibaca dari file-file berikut dalam urutan yang diberikan: /etc/my.cnf ~ / .my.cnf /etc/my.cnf

ckliborn
sumber
1

Bagaimana Anda yakin bahwa file cnf Anda tidak sedang dibaca?

Sudahkah Anda memulai kembali mysqld sejak perubahan?

Sudahkah Anda mencoba membuat db baru dan melihat nilainya?

ckliborn
sumber
0

Untuk menginstal temukan dan updatedb untuk dapat menjalankannya ..

Menggunakan fedora, centos dijalankan sebagai root:

yum install mlocate

jika Anda menjalankan Ubuntu run:

sudo apt-get install mlocate

Setelah Anda selesai menginstal jalankan updatedb Fedora (sebagai root):

$updatedb 

Ubuntu:

sudo updatedb

maka Anda dapat menjalankan perintah temukan seperti yang tercantum di atas. Sekali lagi my.cnf biasanya terletak di / etc. Apakah Anda yakin mysql diinstal? jika tidak melakukan perintah di atas untuk menginstalnya dan ganti mlocate dengan mysqld, semoga berhasil!

J Baron
sumber