MySQL đường dẫn my.cnf ở đâu?


10

Tôi đã quản lý để xác định vị trí thư mục cài đặt của tôi cho MySQL: /usr/local/mysql/

Tôi có thể tìm đường dẫn my.cnfđể biết nơi tôi nên định cấu hình máy chủ ở đâu? Tôi đã thử tạo một /etc/my.cnf(như hiển thị bên dưới) và nó không ảnh hưởng

[mysqld]

#charset
collation_server=utf8_general_ci
character_set_server=utf8
default_character_set=utf8

Cụ thể về bản phân phối bạn đang sử dụng sẽ hữu ích.
Tim

Khá chắc chắn debian / * buntu / rhel / cent sẽ không sử dụng / usr / local từ gói cài đặt. Nghe có vẻ giống như chùng hoặc freebsd.
Tim

Câu trả lời:


20

Theo bài viết này :

Chạy lệnh này từ dòng lệnh / terminal sẽ hiển thị nơi MySQL sẽ tìm tệp my.cnf trên các hệ thống Linux / BSD / OS X:

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

Điều này sẽ tạo ra một cái gì đó như thế này:

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 

Bây giờ bạn có thể kiểm tra các tệp bằng cách sử dụng đầu ra ở trên /etc/my.cnf, sau đó /etc/mysql/my.cnfvà vv. Nếu không có một tại một trong những vị trí đó, bạn có thể tạo một địa điểm và biết rằng MySQL sẽ sử dụng nó.


3

Trên hệ thống Linux, xác định vị trí my.cnf "sẽ là giải pháp nhanh nhất.

Nếu có nhiều file my.cnf, tất cả tìm kiếm khả năng (ví dụ trong /etc, /etc/mysql, /opt/mysql/etc, vv), sau đó bạn có thể chạy straceđể xem nơi MySQL cố gắng nhị phân để tìm tập tin cấu hình của nó, nhưng tôi nghĩ đó là một quá mức cần thiết.


Tôi nhận được -bash: locate: command not found... Tôi đã thử find / my.cnfnhưng không tìm thấy gì.
Webnet

Điều này giả định rằng vị trí của bạn đã được cập nhật kể từ khi tệp my.cnf được tạo. Thông thường điều này được thực hiện hàng ngày qua cron. Nếu bạn cần cập nhật, hãy chạy thủ công "updateb" với quyền root
ckliborn

locate: command not foundkhông phải là vấn đề cập nhật, anh ta không có gói.
Tim

cài đặt gói "slocate".
TheCompWiz

2

OK một phát súng hoang dã trong bóng tối:

Nếu cơ sở dữ liệu được cài đặt trong /usr/local/mysql, sau đó cố gắng tìm kiếm trong /etc/localchomy.cnf

Đây là cách bạn có thể biết nếu bạn có một my.cnf

Chạy truy vấn này (<= 5.6.7)

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

HOẶC (>= 5.6.8)nó đã chuyển sang lược đồ hiệu suất.

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

Nếu bạn nên lấy:

Bạn đang chạy với mặc định và có khả năng có thể không có my.cnfquà.

GHI CHÚ:

Kể từ MySQL 5.7.6, thông tin có sẵn từ các bảng được mô tả ở đây cũng có sẵn từ Lược đồ hiệu suất. Các bảng Information_SCHema không được ưu tiên cho các bảng Lược đồ hiệu suất và sẽ bị xóa trong bản phát hành MySQL trong tương lai. Để được tư vấn về việc di chuyển từ các bảng Information_SCHema sang các bảng Lược đồ hiệu suất, hãy xem Phần 25.20, Di chuyển sang Hệ thống lược đồ hiệu suất và Bảng biến đổi trạng thái.


-bash: updatedb: command not found
Webnet

Cập nhật câu trả lời của tôi. Vui lòng thử lại !!!
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

Làm thế nào bạn cài đặt MySQL và trên nền tảng gì?

Phương pháp Brute force trên hệ điều hành unixoid:

find / -name my.cnf -print

Tôi đã không cài đặt nó, nó đã ở trên một chiếc máy đã vài năm tuổi. Đó là trênLinux 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 sẽ hiển thị cho bạn cuộc gọi hệ thống được sử dụng để mở tệp.


1

Có vẻ như tập tin mà cnf của bạn tạo ra đang được thay thế bởi một tập tin khác. Kiểm tra thứ tự mặc định hte dưới đây.

Từ

mysqld --verbose - trợ giúp

Các tùy chọn mặc định được đọc từ các tệp sau theo thứ tự đã cho: /etc/my.cnf ~ / .my.cnf /etc/my.cnf


1

Làm thế nào bạn chắc chắn rằng tập tin cnf của bạn không được đọc?

Bạn đã khởi động lại mysqld kể từ khi thay đổi?

Bạn đã thử tạo một db mới và xem xét các giá trị của nó chưa?


0

Để cài đặt định vị và cập nhật để có thể chạy nó ..

Sử dụng fedora, centos chạy như root:

yum install mlocate

nếu bạn đang chạy Ubuntu chạy:

sudo apt-get install mlocate

Sau khi bạn hoàn tất cài đặt, hãy cập nhật Fedora (với quyền root):

$updatedb 

Ubuntu:

sudo updatedb

sau đó bạn có thể chạy lệnh định vị như được liệt kê ở trên. Một lần nữa, my.cnf thường nằm trong / etc. Bạn có chắc chắn mysql đã được cài đặt? Nếu không thực hiện các lệnh trên để cài đặt nó và thay thế mlocate bằng mysqld thì thật may mắn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.