আমার কীভাবে মাইএসকিউএলে - সুরক্ষা-ফাইল-প্রাইজকে সামলানো উচিত?


357

আমি মাইএসকিউএল শিখছি এবং একটি LOAD DATAধারা ব্যবহার করার চেষ্টা করেছি । যখন আমি এটি নীচের মতো ব্যবহার করেছি:

LOAD DATA INFILE "text.txt" INTO table mytable;

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

মাইএসকিউএল সার্ভারটি --secure-file-priv বিকল্পের সাথে চলছে তাই এটি এই বিবৃতিটি কার্যকর করতে পারে না

আমি কীভাবে এই ত্রুটি মোকাবেলা করব?

আমি একই ত্রুটি বার্তায় অন্য একটি প্রশ্ন পরীক্ষা করে দেখেছি , তবে এখনও এর সমাধান খুঁজে পাচ্ছি না।

আমি মাইএসকিউএল 5.6 ব্যবহার করছি


আপনার সিএসভি ফাইলের পথ ভাগ করুন
জাফর মালিক

1
অবশ্যই, ব্যবহার করার চেষ্টা করার সময় আপনি এই ত্রুটিটি পেয়েছেন mysqldump --tab, যেমনটি আপনার নিজের ডেটা মাইএসকিএল থেকে বের করা যথেষ্ট শক্ত ছিল না।
উইলিয়াম এন্টারিকেন

1
Vhu- এর উত্তর ছাড়াও, নেকড়ের উত্তরের জন্য নীচে অনুসন্ধান করুন। এটি কাজ করতে আপনাকে '/' এ স্যুইচ করতে হবে (আমি উইন 10 ব্যবহার করছি)
Rsc

4
স্থানীয় ব্যবহার করুন। LOAD DATA LOCAL INFILE ...
এমপ্লেটো

উত্তর:


473

এটি উদ্দেশ্য হিসাবে কাজ করছে। আপনার মাইএসকিউএল সার্ভারটি --secure-file-priv বিকল্প দিয়ে শুরু করা হয়েছে যা মূলত আপনি যে ডিরেক্টরিগুলি ব্যবহার করে ফাইলগুলি লোড করতে পারেন তা সীমাবদ্ধ করে LOAD DATA INFILE

আপনি SHOW VARIABLES LIKE "secure_file_priv";যে ডিরেক্টরিটি কনফিগার করা হয়েছে তা দেখতে ব্যবহার করতে পারেন।

আপনার দুটি বিকল্প রয়েছে:

  1. ডিরেক্টরি দ্বারা নির্দিষ্ট আপনার ফাইল নিয়ে যান secure-file-priv
  2. অক্ষম করুন secure-file-priv। এটি অবশ্যই শুরু থেকে অপসারণ করতে হবে এবং গতিশীল পরিবর্তন করা যাবে না। এটি করতে আপনার মাইএসকিউএল শুরু করার প্যারামিটারগুলি (প্ল্যাটফর্মের উপর নির্ভর করে) এবং my.ini পরীক্ষা করুন।

4
ডিফল্টভাবে my.ini W2012 সার্ভারে মাইএসকিউএল 5.6 চালানোর সময় "সি: \ প্রোগ্রামডাটা \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.6" থেকে পাওয়া যাবে। যেমন তারা তালিকা প্রস্তুত করতে পারেন: আপনি সেবা প্রারম্ভে পরামিতি (\ ProgramData \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.6 \ my.ini যেমন --defaults ফাইল = "সি) চেক করতে পারেন --secure-file-privনিজেই।
vhu

2
@ মোহিতভাসি, আমার- default.ini "সি: \ প্রোগ্রাম ফাইলস \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.6" ফোল্ডারে থাকা উচিত। ভু লোকেশনটি উল্লেখ করছিল "সি: \ প্রোগ্রামডেটা \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.6"। সেক্ষেত্রে আপনি খেয়াল করেননি।
নূরশমিক


11
নোট করুন যে "সিলেক্ট .. আউটফিল ইন" ব্যবহার করে আপনাকে অবশ্যই অবশ্যই পুরো পথটি নির্দিষ্ট করতে হবে এবং পুরো পাথটি অবশ্যই ফলাফলের সাথে মেলেSHOW VARIABLES LIKE "secure_file_priv";
TheSatinKnight

9
"প্যারামিটারগুলি পরীক্ষা করুন" এবং "my.ini দেখুন" খুব ভাল উত্তর নয়
রোল্যান্ড সিউহস

234

আমারও একই প্রশ্ন ছিল. অবশেষে LOCALকমান্ডের বিকল্পটি ব্যবহার করে সমাধান করেছি

LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;

আপনি এখানে আরও তথ্য পেতে পারেন http://dev.mysql.com/doc/refman/5.7/en/load-data.html

যদি স্থানীয় নির্দিষ্ট করা থাকে, ক্লায়েন্ট হোস্টে ক্লায়েন্ট প্রোগ্রাম দ্বারা ফাইলটি পড়ে সার্ভারে প্রেরণ করা হয়। ফাইলটির সঠিক অবস্থান নির্দিষ্ট করার জন্য পুরো পথের নাম হিসাবে দেওয়া যেতে পারে। যদি আপেক্ষিক পথের নাম হিসাবে দেওয়া হয়, নামটি ক্লায়েন্ট প্রোগ্রাম শুরু হয়েছিল সেই ডিরেক্টরিটির সাথে তুলনামূলকভাবে ব্যাখ্যা করা হয়।


2
এটি আমার এবং অন্য কারও পক্ষে কাজ করে না। আমি চেষ্টা করেছি: ১. আমার টেক্সট ফাইলটি আপলোড করতে C:\ProgramData\MySQL\MySQL Server 5.7\Uploads, ২. ম্যাসকিউএল অক্ষম secure_file_privকরা my.iniএবং পুনরায় চালু করা ৩. এটি এক! ধন্যবাদ :)
কমল নয়ন

10
আমি মারিয়াডিবির জন্য এই ত্রুটি বার্তাটি পেয়েছি: "ERROR 1148 (42000): ব্যবহৃত কমান্ডটি এই মারিয়াডিবি সংস্করণ সহ অনুমোদিত নয়"। সঠিক সংস্করণ: "মাইএসকিএল ভের 15.1 ডিস্ট্রিবিউট 10.1.22-মারিয়াডিবি, লিনাক্সের জন্য (x86_64)
রিডলাইন

11
আমি mysql সংস্করণ 5.7.19 এর জন্য "এই কমান্ডটি এই মাইএসকিউএল সংস্করণ সহ অনুমোদিত নয়" পেয়েছি got
অ্যালিসন এস

2
@ অ্যালিসন --local-infileচলমান অবস্থায় পতাকাটি যুক্ত করার চেষ্টা করুন mysqlstackoverflow.com/questions/10762239/...
Illya Moskvin

1
The used command is not allowed with this MySQL versionমাইএসকিউএল 8.0 থেকে
বিটফিশ্চিয়জ

117

উবুন্টু 14 এবং মাইএসকিএল 5.5.53 এ এই সেটিংটি ডিফল্টরূপে সক্ষম হয়েছে বলে মনে হচ্ছে। এটি অক্ষম করার জন্য secure-file-priv = ""আপনাকে মাইকিকিএলডি কনফিগারেশন গোষ্ঠীর অধীনে আপনার my.cnf ফাইলটিতে যুক্ত করতে হবে। উদাহরণ: -

[mysqld]
secure-file-priv = ""

1
এটি আমার পক্ষেও কাজ করেছিল। উবুন্টু এবং মাইএসকিউএল এর একই সংস্করণ
রডনি

1
আমার জন্য +1 কাজ করেছে। আপনি যদি উবুন্টু ব্যবহার করছেন তবে
মাইএসকিএল

1
এটি প্রযোজ্য যেখানে প্রতি বিবৃতিতে আপনি নির্বাচন করেছেন এমন কোনও জায়গায় নির্দেশ করার দরকার হলে এটি কাজ করে। এটি উইন্ডোজ সার্ভারে মাইএসকিউএল 5.7 এর সাথে কাজ করে ঠিক যেমন আপনি ব্যাখ্যা করেছেন। আপনি যদি কেবল লাইনের মত মন্তব্য করে থাকেন তবে # secure-file-priv = ~তারপরেও ত্রুটি রয়েছে কারণ মানটি NULLএটিরূপে এটি করার ফলে সমস্যাটি সমাধান হয় যখন আপনি সার্ভারে যে ডিরেক্টরিগুলি রফতানি করতে পারবেন ইত্যাদি চয়ন করতে চান ইত্যাদি
বিটকয়েন মার্ডারাস ম্যানিয়াক

1
উইন্ডোজে মাইএসকিউএল ৫. me নিয়ে আমার জন্য কাজ করেছেন, অন্য সমাধানগুলি তা করেনি।
সিগ্রিটটন

নোট: ডকারে এটি করা আপনাকে অবশ্যই ডকারের ধারকটি পুনরায় চালু করতে হবে।
ব্যবহারকারী 1717828

38

আমি ডেবিয়ানে মাইএসকিউএল ৫..1.১১ এ কাজ করছি, ডিরেক্টরিটি দেখার জন্য যে কমান্ডটি আমার পক্ষে কাজ করেছে তা হল:

mysql> SELECT @@global.secure_file_priv;

সঙ্গে SHOW VARIABLES LIKE "secure_file_priv";আমি পেতে ERROR 1146 (42S02): Table 'performance_schema.session_variables' doesn't existঅন্য পরিস্থিতিতে নিক্ষিপ্ত হয় এবং আমি অবশেষে সাথে মোকাবিলা করতে হবে। SELECT @@global.secure_file_priv;কমান্ড যদিও প্রত্যাশিত ফলাফলের উত্পাদিত।
মজিদ ফৌলদপুর

1
এটি আমার জন্য কাজ করেছে - উবুন্টু মাইএসকিএল 5.7.21: আউটপুট ফাইলটিকে ডিরেক্টরি /var/lib/mysql-files/output.txt- এ পরিবর্তন করেছে
শ্যানিমিস্টার

2
আপনি কীভাবে এডিট করবেন? আমি এটি /etc/mysql/my.cnf এ সম্পাদনা করার চেষ্টা করেছি এবং মনে হয় এটির কোনও প্রভাব নেই - এটি নুল থাকে
স্লাভিক

24

উইন্ডোজ 7 এ অক্ষম করার জন্য আমার পক্ষে কী কাজ করেছে secure-file-priv( ভু এর উত্তর থেকে বিকল্প # 2 ):

  1. প্রবেশ করে মাইএসকিউএল সার্ভার পরিষেবা বন্ধ করুন services.msc
  2. যান C:\ProgramData\MySQL\MySQL Server 5.6( ProgramDataআমার ক্ষেত্রে একটি লুকানো ফোল্ডার ছিল)।
  3. my.iniনোটপ্যাডে ফাইলটি খুলুন ।
  4. 'নিরাপদ-ফাইল-বেসরকারী' অনুসন্ধান করুন।
  5. লাইনের শুরুতে '#' যোগ করে লাইনটি মন্তব্য করুন। মাইএসকিউএল সার্ভারের জন্য 7.7.১ above এবং তার বেশি, মন্তব্য করা কার্যকর হবে না। আপনাকে এটির মতো একটি খালি স্ট্রিংয়ে সেট করতে হবে -secure-file-priv=""
  6. ফাইলটি সংরক্ষণ করুন।
  7. প্রবেশ করে মাইএসকিউএল সার্ভার পরিষেবাটি শুরু করুন services.msc

16
মাইএসকিউএল সার্ভার ৫.7.১6 অনুসারে, লাইনটি মন্তব্য করা কার্যকর হবে না, কারণ এটি তখন ডিফল্টে ফিরে আসবে, যা আমদানি ও রফতানি অপারেশনকে অক্ষম করে। আপনি যদি কোনও ডিরেক্টরি থেকে এই ক্রিয়াকলাপের অনুমতি দিতে চান তবে আপনাকে এখন এটি একটি খালি স্ট্রিংয়ে সেট করতে হবে।
dbc

1
রামনাথ, দয়া করে, আপনার উত্তরটি @dbc বিবরণ দিয়ে 5.7.x সংস্করণে সম্পাদনা করুন। ধন্যবাদ।
রাফায়েল গোমেস ফ্রান্সিসকো

খালি স্ট্রিং যুক্ত করা আমার পক্ষে কাজ করে; সুরক্ষিত-ফাইল-ખાનગી = "" এর মতো একটি খালি স্ট্রিং যুক্ত করার জন্য দয়া করে উত্তরটি পরিবর্তন করুন
রাজেশ গোয়েল

উইন্ডোজের জন্য ফরোয়ার্ড স্ল্যাশ ব্যবহার নিশ্চিত করুন
অলিভার অলিভার

22

যদি ফাইলটি স্থানীয় নেই আপনার মেশিনে ব্যবহার করতে স্থানীয় আপনার কমান্ড মধ্যে

LOAD DATA LOCAL INFILE "text.txt" INTO table mytable;

14

@vhu

আমি করেছি SHOW VARIABLES LIKE "secure_file_priv";এবং এটি ফিরে আসলC:\ProgramData\MySQL\MySQL Server 8.0\Uploads\ যখন আমি প্লাগ ইন করেছিলাম, এটি এখনও কার্যকর হয়নি।

আমি যখন সরাসরি আমার.inii ফাইলে গেলাম আমি আবিষ্কার করলাম যে পথটি কিছুটা আলাদাভাবে ফর্ম্যাট করা হয়েছে: C:/ProgramData/MySQL/MySQL Server 8.0/Uploads

তারপরে যখন আমি এটির সাথে এটি চালাতাম, এটি কাজ করেছিল। একমাত্র পার্থক্য হ'ল স্ল্যাশের দিকনির্দেশ।


আপনার উত্তর আমার পক্ষে কাজ করেছে, অনেক ধন্যবাদ
বেনাউ মউড

হ্যাঁ হ্যাঁ হ্যাঁ ... এই উত্তরটি এত নীচে কেন। আমি দীর্ঘ সময় ধরে লড়াই করেছি এবং পরে পেয়েছি। আমি এটিকে উত্তর হিসাবে যুক্ত করতে ফিরে এসেছি তবে এটি এতটাই নিচে যে আমার সময় নষ্ট করার আগে আমি এটি দেখিনি।
Rsc Rsc

সব নায়ক ক্যাপ পরেন না।
জেআরকে

8

'নিরাপদ-ফাইল-প্রাইভ' নিয়ে আমারও একই সমস্যা ছিল। .Ini ফাইলটিতে মন্তব্য করা কাজ করে না এবং 'নিরাপদ-ফাইল-বেসরকারী' দ্বারা নির্দিষ্ট ডিরেক্টরিতে ফাইল স্থানান্তরও করেনি।

অবশেষে, ডিবিসি-এর পরামর্শ অনুসারে, 'খালি স্ট্রিং-এর সমান' নিরাপদ-ফাইল-বেসরকারী তৈরি করা কাজ করেছে। সুতরাং উপরের উত্তরগুলি চেষ্টা করার পরে যদি কেউ আটকে থাকে, তবে আশা করি এটি করা উপকারে আসবে।


8

যে জিনিসটি আমার পক্ষে কাজ করেছে:

  1. আপনার ফাইলটি নির্দিষ্ট ফোল্ডারের ভিতরে রাখুন secure-file-priv

এই ধরণের সন্ধান করতে:

mysql> "নিরাপদ_ফाइल_প্রিয়ভ" এর মত চলক দেখান;


  1. আপনার আছে কিনা তা পরীক্ষা করুন local_infile = 1

টাইপিংটি করুন:

mysql> "লোকাল_ইনফাইল" এর মত চলক দেখান;

যদি তুমি পাও:

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | OFF   |
+---------------+-------+

তারপরে এটি একটি টাইপিংয়ে সেট করুন:

mysql> সেট গ্লোবাল লোকাল_ইনফাইল = 1;


  1. আপনার ফাইলের পুরো পথ নির্দিষ্ট করুন। আমার ক্ষেত্রে:

mysql> লোড ডেটা "সি: / প্রোগ্রামডেটা / মাইএসকিউএল / মাইএসকিউএল সার্ভার 8.0 / আপলোড / ফাইল.txt" সারণী পরীক্ষায় প্রবেশ করে;


6

এই থ্রেডটি এই পোস্টের সময় 522k বার দেখা হয়েছে। সত্যিই মাইএসকিউএল কখন আমাদের প্রতিরক্ষামূলক অযৌক্তিক মায়ের হয়ে উঠল ? সুরক্ষার জন্য কত সময় সাপেক্ষ প্রচেষ্টা - যা সত্যই কেবল আমাদের বেঁচে থাকার কাজ করে!

অনেক অনুসন্ধান এবং অনেক চেষ্টার পরে সবকিছু ব্যর্থ হয়েছিল।
আমার সমাধান:

  1. পুরানো বাক্সে পিএইচপিএমইএডমিন আমদানির মাধ্যমে .csv ফাইলটি আমদানি করুন (যদি সেমিডির লাইনে বড় হয়)
  2. একটি .sQL ফাইল তৈরি করুন
  3. .sql ফাইল ডাউনলোড করুন
  4. মাইএসকিউএল ওয়ার্ক বেঞ্চের মাধ্যমে .sQL ফাইল আমদানি করুন

3

এ নিয়ে আমার সব ধরণের সমস্যা ছিল। আমি my.cnf এবং সমস্ত ধরণের ক্রেজি জিনিসগুলি পরিবর্তন করছিলাম যা এই সমস্যার অন্যান্য সংস্করণগুলি দেখানোর চেষ্টা করেছিল।

আমার জন্য কী কাজ করেছে:

আমি যে ত্রুটি পেয়েছিলাম

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

আমি /usr/local/mysql/support-files/mysql.server খোলার মাধ্যমে এবং নীচের লাইনটি পরিবর্তন করে এটি ঠিক করতে সক্ষম হয়েছি:

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" -- $other_args >/dev/null &
  wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

প্রতি

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --secure-file-priv="" $other_args >/dev/null &
  wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

3

আপনি যদি উবুন্টুতে চলতে থাকেন তবে মাইএসকিউএলকে আপনার ফোল্ডারে লেখার অনুমতি দেওয়ার জন্য আপনাকে অ্যাপ্পর্মারটিও কনফিগার করতে হবে, যেমন আমার কনফিগারেশনটি এখানে:

এই লাইনটি ফাইল /etc/apparmor.d/usr.sbin.mysqld এ যুক্ত করুন:

/var/lib/mysql-files/* rw

তারপরে /etc/mysql/my.cnf বিভাগগুলিতে এই 2 টি কনফিগার লাইন যুক্ত করুন:

[client]
loose-local-infile = 1

[mysqld]
secure-file-priv = ""

এখানে আমার এসকিউএল:

select id from blahs into outfile '/var/lib/mysql-files/blahs';

এটা আমার জন্য কাজ করেছে। শুভকামনা!


হ্যাঁ "/var/lib/mysql-files/filename.csv" দিয়ে আউটফিলের পথটি আমার জন্য কাজ করেছে।
অনিধ্য ভটনগর

3

MySQL 8.0 সংস্করণের জন্য আপনি এটি করতে পারেন:

  1. mysql.server স্টপ
  2. mysql.server শুরু --secure-file-ખાનગી = ''

এটি ম্যাক হাই সিয়েরাতে আমার জন্য কাজ করেছিল


3

আপনি নোডজেএস চালাচ্ছেন এবং আপনার ডেটা নীচের ফর্মটিতে থাকলে ডাবল উদ্ধৃতি + কমা এবং new n নতুন লাইন) আমি একটি নোডজেএস আমদানি স্ক্রিপ্ট তৈরি করেছি

INSERT INTO <your_table> VALUEs( **CSV LINE **)

এই একটি http: // লোকালহোস্ট: 5000 / আমদানিতে চালনার জন্য কনফিগার করা হয়েছে ।

আমি এক লাইনে গিয়ে ক্যোরি স্ট্রিং তৈরি করি

"city","city_ascii","lat","lng","country","iso2","iso3","id"
"Tokyo","Tokyo","35.6850","139.7514","Japan","JP","JPN","1392685764",
...

server.js

const express = require('express'),
   cors = require('cors'),
   bodyParser = require('body-parser'),
   cookieParser = require('cookie-parser'),
   session = require('express-session'),
   app = express(),
   port = process.env.PORT || 5000,
   pj = require('./config/config.json'),
   path = require('path');

app.use(bodyParser.json());
app.use(cookieParser());
app.use(cors());


app.use(
   bodyParser.urlencoded({
      extended: false,
   })
);

var Import = require('./routes/ImportRoutes.js');

app.use('/import', Import);
if (process.env.NODE_ENV === 'production') {
   // set static folder
   app.use(express.static('client/build'));

   app.get('*', (req, res) => {
      res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
   });
}

app.listen(port, function () {
   console.log('Server is running on port: ' + port);
});

ImportRoutes.js

const express = require('express'),
   cors = require('cors'),
   fs = require('fs-extra'),
   byline = require('byline'),
   db = require('../database/db'),
   importcsv = express.Router();

importcsv.use(cors());

importcsv.get('/csv', (req, res) => {

   function processFile() {
      return new Promise((resolve) => {
         let first = true;
         var sql, sqls;
         var stream = byline(
            fs.createReadStream('../PATH/TO/YOUR!!!csv', {
               encoding: 'utf8',
            })
         );

         stream
            .on('data', function (line, err) {
               if (line !== undefined) {
                  sql = 'INSERT INTO <your_table> VALUES (' + line.toString() + ');';
                  if (first) console.log(sql);
                  first = false;
                  db.sequelize.query(sql);
               }
            })
            .on('finish', () => {
               resolve(sqls);
            });
      });
   }

   async function startStream() {
      console.log('started stream');
      const sqls = await processFile();
      res.end();
      console.log('ALL DONE');
   }

   startStream();
});

module.exports = importcsv;

db.js হ'ল কনফিগার ফাইল

const Sequelize = require('sequelize');
const db = {};
const sequelize = new Sequelize(
   config.global.db,
   config.global.user,
   config.global.password,
   {
      host: config.global.host,
      dialect: 'mysql',
      logging: console.log,
      freezeTableName: true,

      pool: {
         max: 5,
         min: 0,
         acquire: 30000,
         idle: 10000,
      },
   }
);

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

দাবি অস্বীকার: এটি একটি নিখুঁত সমাধান নয় - আমি কেবল এটি ডেভসদের জন্য পোস্ট করছি যারা একটি সময়রেখার অধীনে রয়েছে এবং আমদানির জন্য প্রচুর ডেটা রয়েছে এবং এই হাস্যকর সমস্যার মুখোমুখি হচ্ছে। আমি এতে অনেক সময় হারিয়েছি এবং আমি আশা করি অন্য দেবকে একই হারানো সময়টি রক্ষা করতে পারি।


1

উইন্ডোজ 10-এ আমার এই সমস্যাটি ছিল "" মাইএসকিউএল -সিকিউর-ফাইল-প্রাইভ "এটি সমাধান করার জন্য আমি নিম্নলিখিতগুলি করেছি।

  1. উইন্ডোজ অনুসন্ধানে (নীচে বাম) আমি "পাওয়ারশেল" টাইপ করেছি।
  2. পাওয়ারশেলের উপর রাইট ক্লিক করে অ্যাডমিন হিসাবে দৌড়েছে।
  3. সার্ভার বিন ফাইলটিতে নেভিগেট করা হয়েছে। (সি: \ প্রোগ্রাম ফাইলগুলি \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.6 \ বিন);
  4. টাইপ করা ./mysqld
  5. "প্রবেশ" হিট

সার্ভারটি প্রত্যাশা অনুযায়ী শুরু হয়েছিল।


1

আপনি কোথায় ফাইলগুলি আমদানি করতে পারবেন তা নিয়ন্ত্রণ করতে মাইএসকিউএল এই সিস্টেমের পরিবর্তনশীলটি ব্যবহার করে

mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv | NULL  |
+------------------+-------+

সুতরাং সমস্যাটি কীভাবে সিস্টেমের ভেরিয়েবলগুলি পরিবর্তন করতে হয় secure_file_priv

  1. শাটডাউন mysqld
  2. sudo mysqld_safe --secure_file_priv=""

এখন আপনি এই মত দেখতে পারেন:

mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+

0

ম্যাকস ক্যাটালিনাতে, আমি সেট করার জন্য এই পদক্ষেপগুলি অনুসরণ করেছি secure_file_priv

1. স্টপ মাইএসকিউএল পরিষেবা

 sudo /usr/local/mysql/support-files/mysql.server stop

2.MYSQL-secure_file_priv সিস্টেমের ভেরিয়েবলগুলি নির্ধারণ করুন art

sudo /usr/local/mysql/support-files/mysql.server start --secure-file-priv=YOUR_FILE_DIRECTORY

দ্রষ্টব্য: খালি মান যুক্ত করা আমার পক্ষে সমস্যাটি স্থির করে এবং এমওয়াইএসকিউএল ডিরেক্টরি / ইউএসআর / স্থানীয় / মাইএসকিএল / ডেটা / YOUR_DB_TABLE / এক্সপোর্টT_FILE এ ডেটা রফতানি করবে

sudo /usr/local/mysql/support-files/mysql.server start --secure-file-priv=

ধন্যবাদ


0

কোনও কনফিগারেশন ফাইল পরিবর্তন না করে ..

  1. secure_file_priv@vhu দ্বারা পোস্ট করা কমান্ডটি ব্যবহারের মান সন্ধান করুন :SHOW VARIABLES LIKE "secure_file_priv"
  2. আপনার প্রশ্নের জন্য পুরো পথটি সংজ্ঞায়িত করুন যেমন: select * from table into outfile 'secure_file_priv_PATH/OUTPUT-FILE' ... rest of your query

এটি আমার জন্য উবুন্টু 18.04 এলটিএস মাইএসকিএল 5.7.29 এ মাইএসকিএল-শেলের কাজ করেছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.