मैं MySQL में दूरस्थ पहुँच को सक्षम करने के लिए इस ट्यूटोरियल का अनुसरण करने की कोशिश कर रहा हूँ । समस्या यह है कि my.cnfफ़ाइल कहाँ स्थित होनी चाहिए ? मैं मैक ओएस एक्स शेर का उपयोग कर रहा हूं।
मैं MySQL में दूरस्थ पहुँच को सक्षम करने के लिए इस ट्यूटोरियल का अनुसरण करने की कोशिश कर रहा हूँ । समस्या यह है कि my.cnfफ़ाइल कहाँ स्थित होनी चाहिए ? मैं मैक ओएस एक्स शेर का उपयोग कर रहा हूं।
जवाबों:
MySQL फोरम पर यह सूत्र कहता है:
डिफ़ॉल्ट रूप से, OS X इंस्टॉलेशन my.cnf का उपयोग नहीं करता है, और MySQL केवल डिफ़ॉल्ट मानों का उपयोग करता है। अपना खुद का my.cnf सेट करने के लिए, आप सीधे / etc में एक फ़ाइल बना सकते हैं।
OS X उदाहरण विन्यास फाइल प्रदान करता है /usr/local/mysql/support-files/।
और यदि आप उन्हें वहां नहीं पा सकते हैं, तो MySQLWorkbench उन्हें आपके लिए बना सकता है:
my.cnfफ़ाइल में आप संपादन कर रहे हैं, mysql --verbose --help | grep my.cnf
मैक ओएस एक्स मावेरिक के मामले में जब MySQL Homebrew के माध्यम से स्थापित किया गया है तो यह स्थित है /usr/local/opt/mysql/my.cnf
/usr/local/mysql/etc। मैं हाई सिएरा पर हूं लेकिन इसे कुछ संस्करणों में वापस स्थापित किया गया था।
सामान्य तौर पर, यूनिक्स और यूनिक्स जैसी प्रणालियों पर, MySQL / MariaDB प्रोग्राम निम्न स्थानों (निर्दिष्ट क्रम में) में कॉन्फ़िगर / स्टार्टअप फ़ाइलों को पढ़ते हैं:
/etc/my.cnf - वैश्विक/etc/mysql/my.cnf - वैश्विकSYSCONFDIR/my.cnf - वैश्विक
SYSCONFDIRजब MySQL का निर्माण किया गया था तबSYSCONFDIRविकल्प के साथ निर्दिष्ट निर्देशिका का प्रतिनिधित्व करता हैCMake। डिफ़ॉल्ट रूप से, यह संकलित-संस्थापन निर्देशिका के अंतर्गत स्थित आदि निर्देशिका है।
$MYSQL_HOME/my.cnf - सर्वर-विशिष्ट (केवल सर्वर)
MYSQL_HOMEएक पर्यावरण चर है जिसमें निर्देशिका के लिए पथ होता है जिसमें सर्वर-विशिष्टmy.cnfफ़ाइल रहती है। यदिMYSQL_HOMEसेट नहीं किया गया है और आपmysqld_safeप्रोग्राम का उपयोग करके सर्वर को शुरू करते हैं , तोmysqld_safeइसेBASEDIRMySQL बेस इंस्टॉलेशन डायरेक्टरी में सेट करता है ।
--defaults-extra-file=pathयदि कोई हो, के साथ निर्दिष्ट फ़ाइल
~/.my.cnf - उपयोगकर्ता-विशिष्ट~/.mylogin.cnf - उपयोगकर्ता-विशिष्ट (केवल ग्राहक)स्रोत: विकल्प फ़ाइलों का उपयोग करना ।
नोट: यूनिक्स प्लेटफार्मों पर, MySQL कॉन्फ़िगरेशन फ़ाइलों को अनदेखा करता है जो विश्व-योग्य हैं। यह सुरक्षा उपाय के रूप में जानबूझकर किया गया है।
इसके अतिरिक्त मैक पर इसे जांचने का एक सरल तरीका है।
Daud: sudo fs_usage | grep my.cnf
यह उस फाइल से संबंधित वास्तविक समय में किसी भी फाइल सिस्टम गतिविधि की रिपोर्ट करेगा।
किसी अन्य टर्मिनल में, अपने MySQL / MariaDB, जैसे को पुनरारंभ करें
brew services restart mysql
या:
brew services restart mariadbटर्मिनल के साथ fs_usage, उचित स्थान को दिखाया जाना चाहिए, जैसे
15:52:22 access /usr/local/Cellar/mariadb/10.1.14/my.cnf 0.000002 sh
तो अगर फ़ाइल मौजूद नहीं है, तो एक बनाएँ।
sudo fs_usage | grep my.cnfविधि काफी कुशल है। मुझे यह फ़ाइल फ़ोल्डर में मिली: /usr/local/etc/my.cnf
private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfसाथ my_print_defसबसे दाएं कॉलम में। फिर थोड़ी देर के बाद ही /usr/local/etc/my.cnfसही-सबसे कॉलम में मेरे टर्मिनल के साथ है। लेकिन ये सभी my.cnfफाइलें मौजूद नहीं हैं!
मुझे नहीं पता कि आप किस MySQL के संस्करण का उपयोग कर रहे हैं, लेकिन यहाँ मेरे OS संस्करण पर 5.5 के लिए संभव है ।
/etc/my.cnf/etc/mysql/my.cnfSYSCONFDIR/my.cnf$MYSQL_HOME/my.cnfdefaults-extra-file( --defaults-extra-file=pathयदि कोई हो, तो निर्दिष्ट फ़ाइल )~/.my.cnfMySQL 5.7 के लिए Mac OS X El Capitan पर: /usr/local/mysql/etc/my.cnf
से डिफ़ॉल्ट डिफ़ॉल्ट कॉपी करें /usr/local/mysql/support-files/my-default.cnf
यदि आप macOS Sierra का उपयोग कर रहे हैं और फ़ाइल मौजूद नहीं है, तो चलाएं
mysql --help or mysql --help | grep my.cnf
mysql के लिए my.cnf के संभावित स्थानों और लोडिंग / रीडिंग सीक्वेंस को देखने के लिए, तब सुझाई गई निर्देशिकाओं में से किसी एक में my.cnf फ़ाइल बनाएं और फिर निम्न पंक्ति जोड़ें
[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तब आप sql मोड को जोड़ने के लिए फ़ाइल को संपादित कर सकते हैं
sudo nano /{preferred-path}/my.cnf
फिर से शुरू करें mysql, voilaah आप जाने के लिए अच्छे हैं। खुश कोडिंग
मैक ओएस एक्स मावेरिक्स के लिए मौजूदा MySQL पैकेज (इस लेखन के समय पर mysql-5.6.17-osx10.7-x86_64) स्वचालित रूप से स्थापना के दौरान एक my.cnf पैदा करता है।
यह /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
आपके संस्करण के अनुसार अपना मार्ग एडाप्ट में स्थित है ।
इसलिए इनमें से किसी भी चीज ने मेरे लिए काम नहीं किया। मैं mysql कम्युनिटी सर्वर के वर्तमान dmg इंस्टॉल का उपयोग कर रहा हूं। पीएस दर्शाता है कि सामान्य रूप से my.cnf में सभी सबसे महत्वपूर्ण पैरामीटर कमांड लाइन पर पारित किए जाते हैं, और मैं यह पता नहीं लगा सका कि यह कहां से आ रहा था। अपने बॉक्स की पूरी टेक्स्ट खोज करने के बाद मैंने इसे इसमें पाया:
/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
इसलिए आप या तो उन्हें वहां बदल सकते हैं, या उन्हें बाहर निकाल सकते हैं, इसलिए यह वास्तव में आपके my.cnf में आपके द्वारा रखे गए लोगों का सम्मान करेगा।
का आनंद लें!
उस फ़ाइल में मिली फ़ाइल जानकारी का उदाहरण:
<?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
आप एक टर्मिनल खोल सकते हैं और टाइप कर सकते हैं locate my.cnf
आप अपनी फ़ाइल को किसी भी निर्देशिका के अंतर्गत बना सकते हैं जिसे आप चाहते हैं। निर्माण के बाद, आप mysql config का पथ "बता" सकते हैं:
आप फ़ाइल की जाँच कर सकते हैं
/usr/local/bin/mysql.serverऔर देखें कि कहां my.confसे पढ़ा जा रहा है।
आमतौर पर यह से है /etc/my.cnfया ~/my.cnfया~/.my.cnf
~/.my.cnf। फ़ाइल नाम से पहले एक डॉट जोड़ें।
MySQL दस्तावेज़ जो संस्करण आप उपयोग कर रहे हैं के लिए मदद मिलेगी। यह आमतौर पर Options Fileया के रूप में वर्णित है MySQL Config File।
दस्तावेज़ में इन फ़ाइलों का स्थान डॉक्स होता है, साथ ही अन्य VITALजानकारी जैसे कि स्थान और छोटे उदाहरण जो कि विन्यास फाइल की तरह दिखना चाहिए।
यूनिक्स प्लेटफार्मों पर, MySQL कॉन्फ़िगरेशन फ़ाइलों को अनदेखा करता है जो विश्व-लेखन योग्य हैं।
यह सुरक्षा उपाय के रूप में जानबूझकर किया गया है।
दूसरे शब्दों में, यदि आपके पास अपने कॉन्फ़िगर फ़ाइल पर गलत अनुमतियाँ हैं, तो लोड नहीं होगा।
कॉन्फ़िगरेशन फ़ाइलों में से एक की प्रारंभिक सेटअप अनुमति का उदाहरण:
RIZZOMBP$ ls -lah /etc/my.cnf
-rw-r--r-- 1 myusername wheel 0B Feb 25 20:40 /etc/my.cnf
!includeअन्य विकल्प फ़ाइलों को शामिल करने के लिए विकल्प फ़ाइलों में निर्देशों का उपयोग करना संभव है और!includedirलिए विशिष्ट निर्देशिकाओं को खोजने के लिए विकल्प फ़ाइलों ........ MySQL इस बात की कोई गारंटी नहीं देता है कि डायरेक्टरी में ऑप्शन फाइल्स को किस ऑर्डर में पढ़ा जाएगा ...
यूनिक्स ऑपरेटिंग सिस्टम पर! -निदेशक निर्देश का उपयोग करते हुए पाया और शामिल की जाने वाली किसी भी फाइल में फ़ाइल नाम होना चाहिए
.cnf। विंडोज पर, यह निर्देश फाइलों के लिए.iniया.cnfविस्तार के साथ जांचता है ।
कैसे अपने विन्यास या लॉग फ़ाइलों के अपने स्थान को खोजने के उदाहरण ect:
यह आपको कॉन्फिग फाइल नहीं दिखाएगा लेकिन आपको अपने इंस्टॉलेशन फाइल / फोल्डर को खोजने में मदद करेगा।
MySQL संस्करण 5.7 और 8+
SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';
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
कमांड क्रेडिट से ऊपर: सर्वरफॉल्ट से इरविन मेयर
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
या
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
क्या आपको विस्तृत संदर्भ नमूना my.cnf चाहिए:
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)
मैं macOS सिएरा में जाँच की, homebrew स्थापित MySql 5.7.12
समर्थन फ़ाइलों पर स्थित हैं
/usr/local/opt/mysql/support-files
बस के my-default.cnfरूप में कॉपी /etc/my.cnfया /etc/mysql/my.cnfविन्यास फिर से शुरू पर उठाया जाएगा।
macOS हाई सिएरा संस्करण 10.13.6
Mysql Ver 14.14 डिस्ट्रीब्यूट 5.7.22, osx10.13 (x86_64) के लिए EditLine रैपर कॉपीराइट (c) 2000, 2018, Oracle और / या इसके सहयोगियों का उपयोग कर रहा है। सभी अधिकार सुरक्षित
डिफ़ॉल्ट विकल्प दिए गए क्रम में निम्नलिखित फाइलों से पढ़े जाते हैं:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/.my.cnf
/ कैटरीना के लिए / pStreet/etc/my.cnf
मैं macs High Sierra संस्करण 10.13.3 में mysql संस्करण 5.7.17 का उपयोग कर रहा हूं और मुझे यहां mysql config फाइल मिली है।
cd /usr/local/mysql/support-files/my-default.cnf
mysql --verbose --help | grep my.cnfजहां यह पाया जाएगा, जैसे कि: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.
/Usr/local/opt/mysql/support-files/my-default.cnf को /etc/my.cnf या /etc/mysql/my.cnf के रूप में कॉपी करें और फिर mysll को पुनरारंभ करें।
मेरे मामले में, फ़ाइल मौजूद नहीं थी। MySQL कार्यक्षेत्र में मैं विकल्प फ़ाइल में गया और कुछ डिफ़ॉल्ट मान पाए। मैंने आवेदन पर क्लिक किया। इसने अनुमति मांगी। इसके बाद my.cnf फाइल को / etc के तहत बनाया। हालांकि, यह ध्यान रखना बहुत महत्वपूर्ण है कि पहली बार जब आप "लागू करें" पर क्लिक करते हैं, तो आप डिफ़ॉल्ट कॉन्फ़िगरेशन में कोई बदलाव नहीं करते हैं। एक बार फ़ाइल बन जाने के बाद, आप "लागू करें" पर क्लिक करने पर परिवर्तन कर सकते हैं। अन्यथा जब आप परिवर्तन करेंगे तो आपको लागू बटन नहीं दिखाया जाएगा।
/etc/mysql/my.cnfलेकिन MySQL कार्यक्षेत्र के बारे में पता नहीं है। इसके बजाय, यह शिकायत करता है कि खाली पथ वाली कॉन्फ़िगरेशन फ़ाइल नहीं मिल सकती है और फिर एक नई फ़ाइल बनाने की पेशकश करती है।
rDefault विकल्प दिए गए क्रम में निम्नलिखित फाइलों से पढ़े जाते हैं: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf //my.cnf
मैं MacOS Mojave (10.14.6) चला रहा हूं और My config फाइल को पहचानने के लिए MySQL प्राप्त करने के लिए, मुझे इसे /usr/local/mysql-5.7.26-macos10.14-x86_64-etc/my.cnf में रखना था। इसके अलावा मेरे पास /usr/local/@mysql/etc/my.cnf से इंगित करने के लिए एक प्रतीकात्मक लिंक है।
मैं sql_mode = only_full_group_by को बंद करने की कोशिश कर रहा था और कॉन्फ़िग फ़ाइल में वह विकल्प सेट करना एकमात्र तरीका था जिससे मैं सत्रों में बने रहने के लिए सेटिंग प्राप्त कर सकता था। कॉन्फ़िगरेशन फ़ाइल की सामग्री हैं:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION
मैं MySQL की मूल स्थापना का उपयोग कर रहा हूं, न कि होमब्रे को स्थापित किया गया है।
Mysql 8.0.19 के लिए, मैंने अंततः my.cnf को यहां पाया: /usr/local/opt/mysql/.bottle/etc मैंने इसे / usr / स्थानीय / ऑप्ट / mysql / में कॉपी किया और इसे संशोधित किया। फिर मैं mysql सेवा को पुनः आरंभ करता हूं, यह काम करता है।