কীভাবে পাসওয়ার্ডটি mysql কমান্ড লাইনে পাস করবেন


20

আমার একটি ফাইলটিতে মাইএসকিউএল পাসওয়ার্ড সংরক্ষণ করা আছে foo.php, উদাহরণস্বরূপ P455w0rd, যখন আমি এটি ব্যবহার করার চেষ্টা করি:

$ cat foo.php | grep '$dbpwd=' | cut -d '"' -f 2 | mysql -U root -p mydb -h friendserver
Enter password: (holds)

$ echo P455w0rd | mysql -u root -p mydb -h friendserver
Enter password: (holds)

উভয় বিকল্প এখনও পাসওয়ার্ডের জন্য জিজ্ঞাসা করে, পাসওয়ার্ডটি প্রেরণের সঠিক উপায় stdinকী?


3
-pআপনার পাসওয়ার্ডের মধ্যে কোনও ফাঁকা থাকতে হবে না ।
Fırat KÜÇÜK

মাইএসকিএল স্টিডিনের কাছ থেকে পাসওয়ার্ডটি পড়ে না, এটি কী পড়বে তা আমি অনুধাবন করতে পারিনি।
ওম

সঠিক উত্তরটি আপনার পাসওয়ার্ডগুলি কমান্ড লাইনে রাখবেন না যেখানে অ্যাক্সেস থাকা যে কেউ /procপ্রোগ্রামটি চলমান অবধি তুচ্ছভাবে সেগুলি পড়তে পারে । এটাই ~/.my.cnfহ'ল, ঠিকঠাকভাবে 0600
শাদুর

উত্তর:


25

কমান্ড লাইনগুলিতে পাসওয়ার্ডগুলি কীভাবে আপনি পাস করবেন সে সম্পর্কে আপনাকে খুব সতর্ক হতে হবে, যদি আপনি সাবধান না হন তবে আপনি এটিকে সরঞ্জামগুলি ব্যবহার করে স্নিফিংয়ের জন্য উন্মুক্ত রেখে দেবেন ps


এটি করার সবচেয়ে নিরাপদ উপায় হ'ল একটি নতুন কনফিগারেশন ফাইল তৈরি করা এবং এটি আদেশ বা কমান্ড লাইন বিকল্পটি mysqlব্যবহার করে পাস করা ।--defaults-file=--defaults-extra-file=

উভয়ের মধ্যে পার্থক্যটি হ'ল পরেরটিটি ডিফল্ট কনফিগারেশন ফাইলগুলি ছাড়াও পড়তে হয় তবে পূর্বের সাথে যুক্তি হিসাবে ব্যবহৃত হয় কেবল একটি ফাইল passed

আপনার অতিরিক্ত কনফিগারেশন ফাইলে কিছু মিল থাকতে হবে:

[client]
user=foo
password=P@55w0rd

আপনি এই ফাইলটি সুরক্ষিত করেছেন তা নিশ্চিত করুন।

তারপরে চালান:

mysql --defaults-extra-file=<path to the new config file> [all my other options]

2
মাইএসকিউএল পতাকাটিতে argvপ্রদত্ত প্যারামিটারগুলি ওভাররাইট করতে এর পরিবর্তন করবে -p। কমপক্ষে এটি এখানে অন্যান্য প্রাসঙ্গিক তথ্যের সাথে একসাথে শেষ হয়েছে: unix.stackexchange.com/questions/78757/…
কুসালানন্দ

এটি সর্বোত্তম সমাধান, কারণ এটি একটি পরিমাপের সুরক্ষা সরবরাহ করে। আপনাকে গো-আরডব্লিউডের chmod করা দরকার, এবং নিশ্চিত করুন যে এই যুক্তিটি অন্যান্য সমস্ত তর্ক যুক্তির আগে ce
চককট্রিল

1
@ কুসালানন্দ, হ্যাঁ, তবে ইউনিক্স.স্ট্যাককেচেঞ্জের উপর মন্তব্য অনুযায়ী / قেক / ৩৮৫৩৩৯ / ১35৩৯৩৩ , এর অর্থ এই নয় যে এটি নিরাপদ!
ওয়াইল্ডকার্ড

--login-pathএটি সমর্থিত যে সম্পর্কে এখন একটি নোট যোগ করার উপযুক্ত হতে পারে । এটি এর চেয়ে বেশি ভাল নয়, তবে এটি সামান্য কম প্লেইন-পাঠ্য (যদিও বিষয়বস্তুকে প্লেইন টেক্সটে রূপান্তর করতে বাধা কম)।
জেফ্রি ওয়াইজম্যান

6
পরিবেশে MYSQL_PWD সেট করুন ( export MYSQL_PWD=muhpassword) এবং এটি ছাড়া আপনার কমান্ড কার্যকর করুন -p। দেখুন মাইএসকিউএল প্রোগ্রাম পরিবেশ ভেরিয়েবল । ম্যানুয়াল এর সত্ত্বেও ভয়ানক সতর্কবার্তা , এই বরং নিরাপদ । যদি না আপনি পরে একই শেলটিতে অদ্ভুত ওয়ারেজ শুরু না করেন। সুতরাং আমরা রান করি:MYSQL_PWD=$(cat foo.php etc) mysql -u foouser -h barhost
ডেভিড টোনহোফার

12

mysqlক্লায়েন্ট ইউটিলিটি পারেন সঙ্গে কমান্ড লাইন একটি পাসওয়ার্ড নিতে পারেন -pবা --password=অপশন।

আপনি যদি ব্যবহার করেন -pতবে অপশন লেটারের পরে কোনও ফাঁকা জায়গা থাকতে হবে না:

$ mysql -pmypassword

আমি স্ক্রিপ্টগুলিতে দীর্ঘ বিকল্পগুলি পছন্দ করি কারণ সেগুলি স্ব-ডকুমেন্টিং হয়:

mysql --password=mypassword --user=me --host=etc

3
এটি অনিরাপদ কারণ কোনও ব্যবহারকারী পাসওয়ার্ডটি দেখতে পেত - সরাসরি /proc/$pid/cmdlineবা psকমান্ডের মাধ্যমে । এটি সত্য যে মাইএসকিএল প্রারম্ভকালে আরজিভিতে পাসওয়ার্ডটি ওভাররাইট করে তবে সর্বদা একটি সময় উইন্ডো থাকে যেখানে অন্য ব্যবহারকারী পাসওয়ার্ডটি পর্যবেক্ষণ করতে পারে। এছাড়াও, কিছু সিস্টেমে আরগভি ওভাররাইটিং কাজ নাও করতে পারে।
ম্যাক্সচলেপজিগ

3

আপনি যদি mysqlএকটি পাসওয়ার্ড দিয়ে শুরু করতে চান তবে প্রথমে আপনাকে একটি ভেরিয়েবলের মধ্যে পাসওয়ার্ড আনতে হবে:

MYSQLPASS=`cat foo.php | grep '$dbpwd=' | cut -d '"' -f 2`

তারপরে আপনি আপনার mysqlআদেশটি দিয়ে এটি শুরু করতে পারেন :

mysql -U root -p ${MYSQLPASS} mydb -h friendserver

1
এটি আপনার পাসওয়ার্ড সুরক্ষাকেও বিপদে ফেলেছে । নোট করুন যে MYSQL_PWDপরিবেশের পরিবর্তনশীল রয়েছে যা mysqlআপনি উল্লেখ না করলে পাঠযোগ্য -p। এবং লিনাক্সের অধীনে এটি একটি সুরক্ষিত পদ্ধতি কারণ কোনও ব্যবহারকারীর পরিবেশ অপ্রত্যাশিত ব্যবহারকারীরা পড়তে পারে না - যুক্তির ভেক্টরের বিপরীতে।
ম্যাক্সচেলেপজিগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.