Tôi đang cố gắng làm theo hướng dẫn này để cho phép truy cập từ xa vào MySQL. Vấn đề là, my.cnf
tập tin nên được đặt ở đâu? Tôi đang sử dụng Mac OS X Lion.
Tôi đang cố gắng làm theo hướng dẫn này để cho phép truy cập từ xa vào MySQL. Vấn đề là, my.cnf
tập tin nên được đặt ở đâu? Tôi đang sử dụng Mac OS X Lion.
Câu trả lời:
Chủ đề này trên diễn đàn MySQL nói:
Theo mặc định, cài đặt OS X không sử dụng my.cnf và MySQL chỉ sử dụng các giá trị mặc định. Để thiết lập my.cnf của riêng bạn, bạn chỉ cần tạo một tệp thẳng trong / etc.
OS X cung cấp các tệp cấu hình ví dụ tại /usr/local/mysql/support-files/
.
Và nếu bạn không thể tìm thấy chúng ở đó, MySQLWorkbench có thể tạo chúng cho bạn bằng cách:
my.cnf
tệp nào bạn đang chỉnh sửa quamysql --verbose --help | grep my.cnf
Trong trường hợp Mac OS X Maverick khi MySQL được cài đặt qua Homebrew, nó được đặt tại /usr/local/opt/mysql/my.cnf
/usr/local/mysql/etc
. Tôi đang ở High Sierra nhưng nó đã được cài đặt một vài phiên bản.
Nói chung, trên các hệ thống tương tự Unix và Unix, các chương trình MySQL / MariaDB đọc các tệp cấu hình / khởi động ở các vị trí sau (theo thứ tự được chỉ định):
/etc/my.cnf
- Toàn cầu/etc/mysql/my.cnf
- Toàn cầuSYSCONFDIR/my.cnf
- Toàn cầu
SYSCONFDIR
đại diện cho thư mục được chỉ định vớiSYSCONFDIR
tùy chọnCMake
khi MySQL được xây dựng. Theo mặc định, đây là thư mục vv nằm trong thư mục cài đặt được biên dịch.
$MYSQL_HOME/my.cnf
- Máy chủ dành riêng (chỉ dành cho máy chủ)
MYSQL_HOME
là một biến môi trường chứa đường dẫn đến thư mục chứamy.cnf
tệp cụ thể của máy chủ . NếuMYSQL_HOME
không được đặt và bạn khởi động máy chủ bằngmysqld_safe
chương trình, hãymysqld_safe
đặt nó vàoBASEDIR
thư mục cài đặt cơ sở MySQL.
tập tin được chỉ định với --defaults-extra-file=path
nếu có
~/.my.cnf
- Người dùng cụ thể~/.mylogin.cnf
- Cụ thể của người dùng (chỉ dành cho khách hàng)Nguồn: Sử dụng tập tin tùy chọn .
Lưu ý: Trên nền tảng Unix, MySQL bỏ qua các tệp cấu hình có thể ghi trên thế giới. Đây là cố ý như một biện pháp an ninh.
Ngoài ra, trên Mac có một cách đơn giản để kiểm tra nó.
Chạy: sudo fs_usage | grep my.cnf
Điều này sẽ báo cáo bất kỳ hoạt động hệ thống tập tin trong thời gian thực liên quan đến tập tin đó.
Trong một Terminal khác, khởi động lại MySQL / MariaDB của bạn, vd
brew services restart mysql
hoặc là:
brew services restart mariadb
Trên thiết bị đầu cuối với fs_usage
, vị trí thích hợp sẽ được hiển thị, ví dụ
15:52:22 access /usr/local/Cellar/mariadb/10.1.14/my.cnf 0.000002 sh
Vì vậy, nếu tập tin không tồn tại, tạo một.
sudo fs_usage | grep my.cnf
phương pháp khá hiệu quả. Tôi tìm thấy tệp này trên thư mục: /usr/local/etc/my.cnf
private/etc/my.cnf
, /usr/local/etc/my.cnf
, /usr/local/Cellar/mysql/<myVersion>/my.cnf
, ~.my.cnf
với my_print_def
ở bên phải nhất cột. Sau một thời gian, nó chỉ /usr/local/etc/my.cnf
với thiết bị đầu cuối của tôi ở cột ngoài cùng bên phải. Nhưng tất cả các my.cnf
tập tin này không tồn tại!
Tôi không biết phiên bản MySQL nào bạn đang sử dụng, nhưng đây là các vị trí có thể có của tệp my.cnf cho phiên bản 5.5 (được lấy từ đây ) trên Mac OS X:
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf
defaults-extra-file
(tệp được chỉ định với --defaults-extra-file=path
, nếu có)~/.my.cnf
Đối với MySQL 5.7 trên Mac OS X El Capitan: /usr/local/mysql/etc/my.cnf
Sao chép conf mặc định từ /usr/local/mysql/support-files/my-default.cnf
Nếu bạn đang sử dụng macOS Sierra và tệp không tồn tại, hãy chạy
mysql --help or mysql --help | grep my.cnf
để xem các vị trí có thể và trình tự tải / đọc của my.cnf cho mysql, sau đó tạo tệp my.cnf trong một trong các thư mục được đề xuất, sau đó thêm dòng sau
[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
sudo touch /{preferred-path}/my.cnf
Sau đó, bạn có thể chỉnh sửa tệp để thêm chế độ sql bằng cách
sudo nano /{preferred-path}/my.cnf
Sau đó khởi động lại mysql, voilaah bạn tốt để đi. mã hóa hạnh phúc
Các gói MySQL hiện tại dành cho Mac OS X Mavericks (mysql-5.6.17-osx10.7-x86_64 tại thời điểm viết bài này) tự động tạo một my.cnf trong khi cài đặt.
Nó được đặt tại /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Thích ứng đường dẫn của bạn theo phiên bản của bạn.
Vì vậy, không có những điều này làm việc cho tôi. Tôi đang sử dụng cài đặt dmg hiện tại của máy chủ cộng đồng mysql. ps cho thấy rằng tất cả các tham số quan trọng nhất thông thường trong my.cnf đều được truyền vào dòng lệnh và tôi không thể tìm ra nơi đó đến từ đâu. Sau khi thực hiện tìm kiếm toàn văn bản trong hộp của tôi, tôi tìm thấy nó trong:
/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
Vì vậy, bạn có thể thay đổi chúng ở đó hoặc đưa chúng ra ngoài để nó thực sự tôn trọng những gì bạn có trong my.cnf của bạn bất cứ nơi nào bạn quyết định đặt nó.
Thưởng thức!
Ví dụ về thông tin tệp được tìm thấy trong tệp đó:
<?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
Bạn có thể mở một thiết bị đầu cuối và gõ locate my.cnf
Bạn có thể tạo tập tin của bạn dưới bất kỳ thư mục nào bạn muốn. Sau khi tạo, bạn có thể "nói" đường dẫn đến cấu hình mysql:
Bạn có thể kiểm tra tập tin
/usr/local/bin/mysql.server
và xem từ đâu my.conf
đang được đọc từ.
Thông thường nó là từ /etc/my.cnf
hay ~/my.cnf
hay~/.my.cnf
~/.my.cnf
. Thêm một dấu chấm trước tên tập tin.
Mở Terminal và sử dụng lệnh bên dưới:
sudo find / -name my.cnf
Tài liệu MySQL cho phiên bản bạn đang sử dụng sẽ giúp ích. Nó thường được mô tả như một Options File
hoặc MySQL Config File
.
Các tài liệu có vị trí của các tệp này trong tài liệu, Cũng như các VITAL
thông tin khác như vị trí & các ví dụ nhỏ về tệp cấu hình phải trông như thế nào.
Phiên bản MySQL 5.6 tiếng Nhật
Trên các nền tảng Unix, MySQL bỏ qua các tệp cấu hình có thể ghi trên thế giới.
Đây là cố ý như một biện pháp an ninh.
Nói cách khác, nếu bạn có các quyền sai được đặt trên tệp cấu hình của mình thì sẽ KHÔNG tải.
Ví dụ về quyền thiết lập ban đầu của một trong các tệp cấu hình:
RIZZOMBP$ ls -lah /etc/my.cnf
-rw-r--r-- 1 myusername wheel 0B Feb 25 20:40 /etc/my.cnf
Có thể sử dụng các
!include
chỉ thị trong các tệp tùy chọn để bao gồm các tệp tùy chọn khác và!includedir
để tìm kiếm các thư mục cụ thể cho các tệp tùy chọn ........ MySQL không đảm bảo về thứ tự các tệp tùy chọn trong thư mục sẽ được đọc ...
Bất kỳ tệp nào được tìm thấy và bao gồm bằng cách sử dụng lệnh! Gộp trên các hệ điều hành Unix phải có tên tệp kết thúc bằng
.cnf
. Trên Windows, lệnh này kiểm tra các tệp có phần mở rộng.ini
hoặc.cnf
.
Ví dụ về cách tìm vị trí của tệp cấu hình hoặc tệp nhật ký của bạn:
Điều này sẽ không hiển thị cho bạn tệp cấu hình nhưng sẽ giúp bạn xác định vị trí các tệp / thư mục cài đặt.
Phiên bản MySQL 5.7 & 8+
SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';
Phiên bản 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
Lệnh tín dụng trên: Erwin Mayer từ 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
HOẶC LÀ
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
Nếu bạn cần một mẫu tham khảo chi tiết my.cnf:
Không liên kết / liên kết đến 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)
Tôi đã kiểm tra trong macOS Sierra, homebrew đã cài đặt MySql 5.7.12
Các tập tin hỗ trợ được đặt tại
/usr/local/opt/mysql/support-files
Chỉ cần sao chép my-default.cnf
như /etc/my.cnf
hay /etc/mysql/my.cnf
và cấu hình sẽ được chọn vào khởi động lại.
macOS High Sierra phiên bản 10.13.6
mysql Ver 14,14 Phân phối 5.7,22, cho osx10.13 (x86_64) bằng cách sử dụng trình bao bọc EditLine Bản quyền (c) 2000, 2018, Oracle và / hoặc các chi nhánh của nó. Đã đăng ký Bản quyền
Tùy chọn mặc định được đọc từ các tệp sau theo thứ tự đã cho:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/.my.cnf
Tôi đang sử dụng phiên bản mysql 5.7.17 trong macOS High Sierra phiên bản 10.13.3 và tôi đã tìm thấy tệp cấu hình mysql ở đây.
cd /usr/local/mysql/support-files/my-default.cnf
mysql --verbose --help | grep my.cnf
nơi nó sẽ được chọn, theo: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.
Đối với Mac, những gì làm việc với tôi là tạo tệp .my.cnf trong đường dẫn ~ của tôi. Hi vọng điêu nay co ich.
Sao chép /usr/local/opt/mysql/support-files/my-default.cnf dưới dạng /etc/my.cnf hoặc /etc/mysql/my.cnf và sau đó khởi động lại mysql.
Trong trường hợp của tôi, tập tin không tồn tại. Trong MySQL Workbench, tôi đã đi đến TÙY CHỌN TÙY CHỌN và tìm thấy một số giá trị mặc định. Tôi bấm vào áp dụng. Nó xin phép. Sau đó, nó đã tạo tập tin my.cnf trong / etc. Tuy nhiên, điều rất quan trọng cần lưu ý là lần đầu tiên bạn nhấp vào "áp dụng", bạn không thực hiện bất kỳ thay đổi nào đối với cấu hình mặc định. Khi tệp đã được tạo, bạn có thể thực hiện các thay đổi sẽ được áp dụng khi bạn nhấp vào "áp dụng". Nếu không, bạn sẽ không được hiển thị nút áp dụng khi bạn thực hiện thay đổi.
/etc/mysql/my.cnf
nhưng MySQL Workbench không biết về nó. Thay vào đó, nó phàn nàn rằng tập tin cấu hình với một đường dẫn trống không thể được tìm thấy và sau đó cung cấp để tạo một tập tin mới.
Các tùy chọn rDefault được đọc từ các tệp sau theo thứ tự đã cho: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf
Tôi đang chạy MacOS Mojave (10.14.6) và để MySQL nhận ra tệp cấu hình của mình, tôi đã phải đặt nó trong /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf. Ngoài ra, tôi có một liên kết tượng trưng chỉ đến nó từ /usr/local/@mysql/etc/my.cnf.
Tôi đã cố gắng tắt sql_mode = only_full_group_by và thiết lập tùy chọn đó trong tệp cấu hình là cách duy nhất tôi có thể khiến cài đặt duy trì trong các phiên. Nội dung của tệp cấu hình là:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION
Tôi đang sử dụng bản cài đặt gốc của MySQL, không phải cài đặt Homebrew.
Đối với mysql 8.0.19, cuối cùng tôi đã tìm thấy my.cnf tại đây: /usr/local/opt/mysql/.bption/etc Tôi đã sao chép nó vào / usr / local / opt / mysql / và sửa đổi nó. Sau đó, tôi khởi động lại dịch vụ mysql, nó hoạt động.