রুট পাসওয়ার্ড ছাড়াই ক্রোন জবতে mysqldump ব্যবহার করা হচ্ছে


14

আমি যদি আমার বাক্সে মূল পাসওয়ার্ড দিয়ে লগইন করি তবে আমি কেবল টাইপ করতে পারি

mysqldump - সমস্ত ডাটাবেস এবং আমি প্রত্যাশিত "ডাম্প" পেয়ে যাব।

এটিকে একটি ব্যাকআপ ড্রাইভে চালাতে এবং ডাম্প করতে আমি ক্রোন.ডেইলে একটি চাকরী সেটআপ করি। আমার সমস্যাটি হ'ল যদিও ব্যবহারকারী রুট হিসাবে চলছে তবে আমি নিম্নলিখিত বার্তাটি পাই

mysqldump: পেয়ে গেছেন ত্রুটি: 1045: ব্যবহারকারীর 'রুট' @ 'লোকালহোস্ট' এর জন্য অ্যাক্সেস অস্বীকার করা হয়েছে (পাসওয়ার্ড ব্যবহার করে: না)

সংযোগ করার চেষ্টা করার সময়। আমি স্ক্রিপ্টে মাইএসকিএল ডাটাবেস রুট পাসওয়ার্ডটি হার্ড করতে চাই না (কে হবে)।

আমার বাশ শেলের কমান্ড লাইনে আমি কেবল "mysqldump" টাইপ করতে পারি তা বিবেচনা করে -u প্যারামিটারটি ব্যবহার করে ঘুরতে হবে অবশ্যই আমার স্ক্রিপ্টের শীর্ষে ইতিমধ্যে #! / Bin / bash আছে।

ডাটাবেসে রুট পাসওয়ার্ড না চাইতে এটি পেতে আমি এখানে কী মিস করছি?

উত্তর:


12

মাইএসকিএল সার্ভারের সাথে সংযোগ স্থাপন করতে আপনাকে অবশ্যই শংসাপত্র সরবরাহ করতে হবে। আপনি এগুলি একটি কনফিগারেশন ফাইলে নির্দিষ্ট করতে পারেন, কমান্ড লাইনের মাধ্যমে তাদের পাস করতে পারেন বা কেবল এমন অ্যাকাউন্ট তৈরি করতে পারেন যার জন্য শংসাপত্রের প্রয়োজন হয় না।

অবশ্যই নো-পাসওয়ার্ড বিকল্পটি কখনও ব্যবহার করা উচিত নয়, পাস বাই কমান্ড লাইনটি দুর্দান্ত নয় কারণ যে কেউ পিএস চালাতে পারে সে কমান্ড লাইনটি দেখতে সক্ষম হতে পারে।

প্রস্তাবিত বিকল্পটি হ'ল এতে শংসাপত্রগুলির সাথে একটি মাইএসকিএল কনফিগারেশন ফাইল তৈরি করা এবং তারপরে ফাইল সিস্টেমের অনুমতি সহ সেই ফাইলটিকে সুরক্ষা দেওয়া যাতে কেবলমাত্র আপনার ব্যাকআপ ব্যবহারকারী এটি অ্যাক্সেস করতে পারে।

রুট হিসাবে ইন্টারেক্টিভভাবে লগ ইন করার সময় আপনি মাইএসকিএল সার্ভারে লগইন করতে সক্ষম হচ্ছেন বলে মনে হয় যে আপনার কাছে কোনও রুট পাসওয়ার্ড সেট নেই, বা আপনার কোনও স্ক্রিপ্টের সাহায্যে কনফিগারেশন ফাইল নেই যা পাওয়া যায় নি। আপনার যদি একটি .my.cnf থাকে তবে আপনার ম্যানুয়ালি এটিকে নির্দেশ করতে পারে। যদি আপনার রুট অ্যাকাউন্টে কোনও পাসওয়ার্ড সেট না থাকে তবে আমি আপনাকে দৃ fix়ভাবে তা ঠিক করতে উত্সাহিত করব।

আপডেট (2016-06-29) আপনি MySQL 5.6.6 বা তার অধিক চলমান হয়, আপনি তাকান উচিত mysql_config_editor সরঞ্জাম যা আপনি করতে পারবেন পরিচয়পত্র সংরক্ষণ একটি এনক্রিপ্ট করা ফাইলের মধ্যে। জিওভান্নিকে আমার কাছে এটি উল্লেখ করার জন্য ধন্যবাদ ।


1
এই পদ্ধতিটিতে সিস্টেমে থাকার জন্য প্লেইন-পাঠ্যে একটি এনক্রিপ্ট করা পাসওয়ার্ড প্রয়োজন। এটাই আমি এড়াতে চাইছি।
মিচ সফটওয়্যার

> হয় আপনার কাছে একটি রুট পাসওয়ার্ড সেট নেই, বা আপনার কাছে এমন একটি কনফিগারেশন ফাইল রয়েছে যা আপনার স্ক্রিপ্টের দ্বারা পাওয়া যায় নি। লেখক স্পষ্টভাবে বলেছেন যে মূলের জন্য একটি মাইএসকিএল পাসওয়ার্ড রয়েছে এবং তিনি ডেটাবেসটি মাইএসকিএলডাম্প কমান্ডটি সরবরাহ না করেই অ্যাক্সেস করার চেষ্টা করছেন: "(পাসওয়ার্ড ব্যবহার করে: না)"। সুতরাং অ্যাক্সেস ত্রুটি অস্বীকার করেছে।
সোমমাথ

1
@ অ্যামনোমিথ, লেখক আরও বলেছেন যে ইন্টারঅ্যাকটিভভাবে মূল হিসাবে লগ ইন করার সময় সে কোনও পাসওয়ার্ড ছাড়াই লগইন করতে পারে। এটি আমাকে বলে যে কিছু ঠিক নেই।
জোরডাচে

2
@ মেক সফটওয়্যার, রুট অ্যাকাউন্ট থেকে নিজেকে রক্ষা করার চেষ্টা করার মতো খুব বেশি কিছু নেই। কারওর রুট অ্যাকাউন্ট থাকলে তারা কেবল মাইএসকিএল পুনরায় চালু করতে পারে এবং অনুমতি সিস্টেমটিকে পুরোপুরি বাইপাস করতে পারে।
জোরডাচে

1
আমি লগইন করতে সক্ষম হওয়ার কারণটি হ'ল মূল অ্যাকাউন্টটিতে একটি .my.cnf 600০০ টি অনুমতি সহ নির্দিষ্ট করা ছিল, সুতরাং শেলটি এভাবেই অ্যাক্সেস পাচ্ছিল। ক্রোন অবশ্যই ফাইলটিকে অগ্রাহ্য করবে তাই আমি এটিকে নির্দেশ করতে এই পোস্টে প্যারামিটারটি ব্যবহার করেছি।
মিচ সফটওয়্যার

3

অস্পষ্টতার মাধ্যমে সুরক্ষা করা উচিত নয়। যদি আপনি ভীত হন যে কারও কাছে আপনার রুট অ্যাকাউন্টে অ্যাক্সেস রয়েছে, তবে স্ক্রিপ্টে মূলের মাইএসকিএল পাসওয়ার্ড সংরক্ষণ করা উচিত নয়, যেহেতু আপনার সমস্ত ডেটা মাইএসকিএল ডাম্প বা ডাটাবেস ফাইলগুলিতে উপলব্ধ। সুতরাং, আসল প্রশ্নটি আপনি কী রক্ষা করার চেষ্টা করছেন?

আপনি যদি অন্যদের এমন পাসওয়ার্ড না পেতে চান যা তাদের আপনার ডেটাবেজে ডেটা পরিবর্তন করতে দেয়, তবে আপনাকে উপযুক্ত অনুমতি সহ ব্যবহারকারী তৈরি করতে হবে ।

যদি আপনি না চান যে সেই স্ক্রিপ্টে রুট সেট ফাইলের অনুমতি ব্যতীত কোনও স্থানীয় অ্যাকাউন্টে এই মাইএসকিএল পাসওয়ার্ডটি দেখা যাবে এবং তার রুটের মালিক হতে হবে।


1
আমি অনুমান করি যে আমি এখনও বুঝতে পারি না তা হ'ল আমি যদি কোনও পাসওয়ার্ড ইনপুট না দিয়ে (রুট প্রম্পট থেকে) মাইএসকিএলডাম টাইপ করতে পারি তবে কেন আমি ক্রোন জব দিয়ে একইভাবে চালাতে পারি না। কি টুকরা অনুপস্থিত যা -p প্যারামিটার প্রয়োজন। আমি পাসওয়ার্ডটি "অস্পষ্ট" করার চেষ্টা করছি না, বরং এটি কখনও প্রবেশ না করাই ছিল। রুট লগইনে নিজেই বিশেষ কিছু অ্যাক্সেসের অনুমতি দিচ্ছে, তবে কেন এটি ক্রোন দিয়ে প্রতিলিপি করা যায় না?
মিচ সফটওয়্যার

আপনি যদি দেখতে পান যে আপনি পাসওয়ার্ড ছাড়াই এবং একই "রুট" ব্যবহারকারীর পাসওয়ার্ড ছাড়া লগইন করতে পারেন, আপনার মাইএসকিএল ডাটাবেসে একাধিক রুট ব্যবহারকারী থাকতে পারে। তাদের মধ্যে কিছুতে পাসওয়ার্ড সেট নাও থাকতে পারে। আপনি 'রুট' @ 'লোকালহোস্ট' থেকে পাসওয়ার্ড সরিয়ে ফেলতে পারেন তবে কেবল ক্রোনই আপনার ডাটাবেসের সাথে সংযোগ রাখতে সক্ষম হবে না, তবে স্থানীয় অ্যাকাউন্ট সহ যে কেউ। পরিষ্কার টেক্সট স্ক্রিপ্টে পাসওয়ার্ড থাকার চেয়ে এটি আলাদা (বা আরও খারাপ) নয়।
monomyth

আমি মনে করি যে বিষয়টি মেকসফটওয়্যারটি তৈরি করছিল তা হ'ল মূলটি আপনাকে মূলত ডেটাবেস ফাইলগুলিতে অ্যাক্সেস দেয় এবং সেগুলি এনক্রিপ্ট করা হয় না। অতএব, মূল ব্যবহারকারীদের কাছে মাইএসকিউএল পাসওয়ার্ডের প্রয়োজনীয় তথ্য কেবল প্রিন্ট করতে হবে যা তারা ইতিমধ্যে অ্যাক্সেস করতে পারে তা হ'ল "অস্পষ্টতার মাধ্যমে সুরক্ষা"। তদতিরিক্ত, অনুমতিগুলি খুব জগাখিচুড়ি করা সহজ, উদাহরণস্বরূপ কেউ যদি কোনও ডিরেক্টরিতে তাদের পুনরাবৃত্তভাবে সেট করে রাখে, যদি ফাইলের সাথে কোনও প্রতীকী লিঙ্ক থাকে ইত্যাদি।
সেপ্টগ্রাম

2

আপনার শেল ব্যবহার এটির সাহায্যে এটি চালানোর জন্য আপনার শেল থাকতে পারে, যেমন আপনি লগইন করার সময় আপনার প্রোফাইলের সমস্ত শেল স্ক্রিপ্ট চালিত হয় get

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

আপনি ক্রোনটির অধীনে চলার জন্য শেল সেট করতে পারেন, ক্রন্টবটি সম্পাদনা করতে পারেন এবং শেল এবং হোম ভেরিয়েবলগুলি যুক্ত করতে পারেন, যেমন।

SHELL=/bin/bash
HOME=/root

যদি এগুলি সেট না করা থাকে তবে ক্রোনটি / etc / passwd (যা সম্ভবত কিছুই নয়, সম্ভবত / বিন / sh) তে নির্দিষ্ট শেল এবং হোম ডিরেক্টরি সহ চলবে।

আপনি যদি পরিবেশ ক্রোনটি চলমান দেখতে চান তবে একটি ক্রোন জব যুক্ত করুন যা কোনও ফাইলের মধ্যে এনভির রফতানি করে, যেমন:

$crontab -e
* * * * * env > /tmp/crontabenv.log
:wq

1

স্ক্রিপ্টটি রুট দ্বারা চালিত হলে আপনি 600 / এর অনুমতি এবং নিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল /root/.my.cnf তৈরি করতে পারেন :

[client]
user = DBUSERNAME
password = DBPASSWORD

(যেখানে আপনি আপনার মাইএসকিউএল ব্যবহারকারীর নাম এবং পাসওয়ার্ড অবশ্যই প্রবেশ করেন)।

এই ফাইলটি কোনও ম্যাসকিএল কমান্ড-লাইন সরঞ্জাম দ্বারা স্বয়ংক্রিয়ভাবে পড়তে হবে, যদি এটি রুট হিসাবে চালানো হয়। কমান্ড-লাইনে এটি সরবরাহ করার দরকার নেই। 600 টি অনুমতি এটি দামের চোখের বিরুদ্ধে রক্ষা করে।


1
আমি দেখতে পেলাম যে এটি পাসওয়ার্ড ছাড়াই মাইএসসিএলডাম্পে সক্ষম হয়েছি of সুতরাং এটি কীভাবে শেল এটি করছে তা রহস্যের সমাধান করেছে, ক্রোন কেন এটি পড়ছে না?
মিচ সফটওয়্যার

1
ক্রোন থেকে চালিত হলে mysqldump .my.cnf ফাইলটি সনাক্ত করতে সক্ষম নাও হতে পারে। প্রতিকারটি হ'ল একটি mysqldump প্যারামিটার যুক্ত করে স্পষ্টভাবে the.my.cnf ফাইলের বিকল্পগুলি পড়তে পারা যায় - যেমন --defaults-अतिरिक्त-ফাইল = / রুট / .my.cnf স্ট্যাক ওভারফ্লোতে আমি অন্য দুটি উত্তর থেকে এটি শিখেছি। দেখুন stackoverflow.com/a/602054/854680 এবং stackoverflow.com/a/890554/854680
MikeOnline

1

ক্রোন ডিবাগ করতে খুব হতাশ হতে পারে। ক্রোন জবগুলি কার্যকর হলে, তাদের যেমন শেল দিয়ে মঞ্জুর করা হয় তেমন পরিবেশ সেট থাকে না।

ক্রোন জন্য টিপস:

  • "ECHO = / বিন / প্রতিধ্বনি", ইত্যাদির পুরো পথ ব্যবহার করুন: (এটিকে আরও সহজ করতে শীর্ষে ভেরিয়েবলগুলি সংজ্ঞায়িত করুন)
  • মেল্টো সেট করুন, যাতে আপনি প্রতিটি কাজ থেকে একটি ইমেল পান (বা চাকরিগুলি স্টাডার / স্টাডআউটকে কোনও ফাইলে পুনঃনির্দেশিত করুন)

যদি আপনার রুট ব্যবহারকারী শেল থেকে এটি করতে পারে তবে ক্রোন এটি করতে সক্ষম হবে। নিশ্চিত হয়ে নিন যে আপনি কমান্ড-লাইনে ব্যবহার করার জন্য স্পষ্টভাবে কনফিগার ফাইলটি নির্দিষ্ট করেছেন।


0

যদিও এই প্রতিক্রিয়াগুলির বেশ কয়েকটি সহায়ক বিভ্রান্তিকর কারণ ইউনিক্স রুট ব্যবহারকারী এবং মাইএসকিএল রুট ব্যবহারকারী একই নয় এবং মূলত তারা লগইন নাম 'রুট' ব্যবহার করা ছাড়া অন্য কোনও সম্পর্ক নেই। হতে পারে এটি সুস্পষ্ট তবে মনে হয় কিছু প্রতিক্রিয়া দুটিকে সংঘাতের মধ্যে ফেলেছে।

মাইএসকিএলডি-তে কোনও দরকারী বিকল্প (সম্ভবত এটি বিদ্যমান?) কী হতে পারে ক্লায়েন্ট প্রোগ্রামগুলি যেমন মাইএসকিএল বা মাইএসকিলডাম্প ইত্যাদি ইউনিক্স রুট হিসাবে চলমান মাইএসকিএলডি'র রুট @ লোকালহোস্টে পাসওয়ার্ড ছাড়াই রুট @ লোকালহোস্টের (মাইএসকিএল) পাসওয়ার্ড সংরক্ষণ না করে প্রবেশের অনুমতি দেয়? একটি my.cnf ফাইল বা অনুরূপ।

আমি জানি যে কিছুটা ঘাবড়ে গেছে তবে যুক্তিটি যে কেউ স্থানীয় হিসাবে চালাচ্ছেন (মাইএসকিএলডি সার্ভারে) ইউনিক্স রুট যেকোন উপায়ে, মাইএসকিএলডি'র সুরক্ষা বাই-পাস করতে পারে। এবং মাইএসকিএলডি রুট পাসওয়ার্ড 7x24 এর সাথে একটি মাই সিএনএফ থাকা বা এমনকি ফ্লাইতে মাইএসকিএল রুট পাসওয়ার্ড (যে পাসওয়ার্ডটি কোথা থেকে আসে?) দিয়ে একটি মাই সিএনএফ তৈরি / মুছে ফেলা (উদাঃ, মাইকিকিল্ড্প করা) আমাকে নার্ভাস করে তোলে ।

এটির জন্য কিছু অবকাঠামো এবং চিন্তাভাবনা প্রয়োজন কারণ মাইএসকিএল / মাইএসকিএলডাম্প / ইত্যাদিতে বিশ্বাস রাখতে হবে যে মাইএসকিএলডে স্থানান্তরিত করতে এটি সত্যই বিশ্বাস করে যে এটি স্থানীয় ইউনিক্স রুট অ্যাকাউন্ট দ্বারা পরিচালিত হচ্ছে।

তবে উদাহরণস্বরূপ কেবল মাইএসকিএলডিএর ইউনিক্স সকেটে সীমাবদ্ধ করা, কোনও টিসিপি কমপক্ষে এই বিকল্পের দৃ strongly়ভাবে প্রস্তাবিত বিকল্প হিসাবে সহায়তা করতে পারে না। এটি প্রতিষ্ঠিত করতে পারে যে ক্লায়েন্ট স্থানীয়ভাবে চলমান রয়েছে যা সম্ভবত যথেষ্ট পরিমাণে নয়। তবে এটি একটি ধারণার সূচনা হতে পারে। সম্ভবত কোনও ইউনিক্স সকেটের উপরে একটি ফাইল বর্ণনাকারী প্রেরণ করা অন্য এক টুকরো হতে পারে (যদি এটি পাগল কথা বলে মনে হয় তবে এটি গুগল করুন))

পিএস না, আমি এখনই মস্তিষ্কের ঝড় তোলার চেষ্টা করব না যে এর মধ্যে কোনও কীভাবে একটি অ-ইউনিক্স অপারেটিং সিস্টেমে কাজ করতে পারে যাতে ধারণাটি সম্ভবত অন্যান্য ওএসের মধ্যে অনুবাদ করে।


1
/root/.my.cnfযথাযথ অনুমতি নিয়ে শংসাপত্রগুলি খুব সুন্দরভাবে সমাধান করে।
মাইকেল হ্যাম্পটন

আমি একমত নই, এখন যে কেউ অন্য কোনও সিস্টেমের ত্রুটি সহ সেই ফাইলটিতে অ্যাক্সেস পেতে পারে তার মাইএসকিএল রুট পিডব্লু হয়। এবং এটি আক্রমণ করার মতো 24x7, এবং একটি নির্দিষ্ট ফাইলের স্থানে রয়েছে (অবশ্যই স্বীকার করতে হবে যে এটি / রুটে থাকা উচিত হবে না)) তবে উদাহরণস্বরূপ, যিনি ফাইল সিস্টেমের ডাম্প চালাচ্ছেন বা একটিতে অ্যাক্সেস পেতে পারেন, সেটিকে এড়িয়ে যেতে পারে can একটি ফাইল সিস্টেম ডাম্প ফাইল। সেক্ষেত্রে এটি অসন্তুষ্ট কর্মীর জন্য প্রলোভনের মতো শোনাচ্ছে। আমি মনে করি এটি একটি যুক্তিসঙ্গত লক্ষ্য যা কোনও সিস্টেমে, কোথাও কোনও ক্লিয়ারটেক্সট পাসওয়ার্ডের অস্তিত্ব নেই।
ব্যারি শাইন

হতে পারে তবে আপনার প্রস্তাবটি আরও খারাপ, যেহেতু এটি কোনও স্থানীয় ব্যবহারকারীকে তুচ্ছভাবে রুট হওয়ার ভান করতে দেয়।
মাইকেল হ্যাম্পটন

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