উত্তর: সার্ভারটি নতুন করে সংশোধন করে কীভাবে মাইএসকিউএল সার্ভারের রুট পাসওয়ার্ড পরিবর্তন করবেন


14

আমি আমার সার্ভারকে উত্তরীয় প্লেবুক দিয়ে প্রভিশন করেছি। আমি রুট / বেডরক-এঞ্জিবল প্লেবুক ব্যবহার করেছি ।

কাজগুলির মধ্যে একটি ছিল মাইএসকিএল সার্ভার সেট করা যা মাইএসকিএল রুট ব্যবহারকারীর পাসওয়ার্ডের সাথে একত্রে।

এখন আমার জরুরিভাবে এই পাসওয়ার্ডটি পরিবর্তন করা দরকার। আমি যে পদক্ষেপ নিয়েছি:

  1. আমি উত্তরযোগ্য ভূমিকার জন্য পরিবর্তনশীল আপডেট করেছি
  2. আমি ansible-playbook -i hosts/staging server.ymlসার্ভারটি পুনঃনির্ধারণের জন্য আদেশটি কার্যকর করেছিলাম

সমস্ত কাজ প্রত্যাশিত হিসাবে কার্যকর করা হয়েছিল (কোনও পরিবর্তন হয়নি), তবে [mariadb | Set root user password]এই বার্তাটি সহ স্ক্রিপ্টটি ব্যর্থ হয়েছিল :

msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials

আমার ধারণা হ'ল একবার মাইএসকিউএল রুট পাসওয়ার্ড সেট হয়ে গেলে সার্ভারটি পুনঃনির্ধারণ করা এই পাসওয়ার্ডটি পরিবর্তন করতে পারে না।

উত্তর দিয়ে সার্ভারটি নতুন করে সংশোধন করে মাইএসকিউএল রুট পাসওয়ার্ড পরিবর্তন করা কি আদৌ সম্ভব? আমার বিকল্পগুলি কি?

উত্তর:


15

আপনার সমস্যাটি হ'ল উত্তরযোগ্য আপনি লগইন করতে একই রুট পাসওয়ার্ডটি ব্যবহার করার চেষ্টা করছেন আপনি এটিকে পরিবর্তন করতে চান:

- name: Set root user password
  mysql_user: name=root
              host="{{ item }}"
              password="{{ mysql_root_password }}"
              check_implicit_admin=yes
              login_user="{{ mysql_user }}"
              login_password="{{ mysql_root_password }}"
              state=present

অবশ্যই আপনি যদি এই নাটকটি পরিবর্তন করতে ব্যবহার করতে চান তবে এটি কখনই কাজ করবে না।

পরিবর্তে আপনার উপরের নাটকটি এমন কিছু হওয়া উচিত:

- name: Set root user password
  mysql_user: name=root
              host="{{ item }}"
              password="{{ mysql_root_password }}"
              check_implicit_admin=yes
              login_user="{{ mysql_user }}"
              login_password="{{ mysql_old_root_password }}"
              state=present

এবং তারপরে এই নতুন ভেরিয়েবলটি যুক্ত করতে সম্পর্কিত ইনভেন্টরি ফাইলগুলি আপডেট করুন।

সুতরাং আপনার group_vars/productionএখন থাকা উচিত:

mysql_old_root_password: productionpw
mysql_root_password: newproductionpw

দেখে মনে হচ্ছে এই প্লেবুকটি প্লেবুক উভয়টিতেই মূল পাসওয়ার্ড ব্যবহার করেছে roles/mariadb/tasks/main.ymlএবং এটি সঠিকভাবে সেট আপ হয়েছে তা নিশ্চিত করতে আপনি roles/wordpress-setup/tasks/database.ymlপুরো server.ymlপ্লেবুকটি চালাতে চাইতে পারেন ।


একটি দুর্দান্ত উত্তরের জন্য অনেক ধন্যবাদ। এই হ 'ল যেতে হয়. আমি কনসোলে মূল পাসওয়ার্ডটি পুনরায় সেট করে শেষ করেছি mysqladmin- তবে এটি আপনার উত্তরটি
দেখার

7

মাইএসকিএল -রুট-পাসওয়ার্ড পরিবর্তন করতে সক্ষম হওয়ায় আপনি ~ / .my.cnf এর অপব্যবহার করতে পারেন ।

কৌশলটি একটি টাস্ক "রুট পাসওয়ার্ড সেট করুন" (nr.1) থাকা উচিত যা পাসওয়ার্ড সেট করবে। এরপরে, আপনার একটি টাস্ক রয়েছে যা সঠিক শংসাপত্রগুলি (nr.2) দিয়ে একটি। / .My.cnf তৈরি করে ।

একটি নতুন সিস্টেমে, ~ / .my.cnf উপস্থিত নেই। কার্য nr.1 প্রদত্ত শংসাপত্রগুলির সাথে mysql-root-ব্যবহারকারী তৈরি করবে। বর্তমান সিস্টেমে, ~ / .my.cnf থেকে শংসাপত্রগুলি লগইন করতে এবং mysql_root_password এ পাসওয়ার্ড সেট করতে ব্যবহৃত হয় । টাস্ক এনআর ২2 নতুনগুলির সাথে old / .my.cnf তৈরি করবে , বিদ্যমান পুরাতন শংসাপত্রগুলি over / .my.cnf তৈরি করবে ।

এই পদ্ধতির বড় সুবিধাটির মধ্যে কেবল একটি মাত্র পরিবর্তনশীল "মাইএসকিএল_রোট_প্যাসওয়ার্ড" রয়েছে যা প্লেবুকের পয়েন্ট-ভিউ থেকে সর্বদা সঠিক। বর্তমান সিস্টেমে ()), local / .my.cnf বর্তমান স্থানীয় মাইএসকিএল -শংসাপত্রগুলির জন্য এক ধরণের স্টোরেজ।

- name: Set root user password
  # If .my.cnf already exists, this will cause an mysql-root-password update.
  mysql_user:
    name: root
    password: "{{ mysql_root_password}}"
    check_implicit_admin: true

- name: Create .my.cnf
  template:
   src: "client.my.cnf.j2"
   dest: "/root/.my.cnf"
   owner: root
   group: root
   mode: 0600

client.my.cnf.j2 এর সাথে:

[client]
user=root
password={{ mysql_root_password }}

আরও পড়া

উত্তরযোগ্য-মাইএসকিএল_ইউজার_মডিউল-ডকুমেন্টেশন থেকে প্রাসঙ্গিক নোটগুলি :

  • নোট 1:

    এই ব্যবহারকারীকে আদর্শ প্লেবুকের অংশ হিসাবে সুরক্ষিত করতে, আপনাকে অবশ্যই কমপক্ষে দুটি কার্য তৈরি করতে হবে: প্রথমটি অবশ্যই কোনও লগইন_ইউজার / লগইন_প্যাসওয়ার্ড বিবরণ না দিয়ে রুট ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করতে হবে। দ্বিতীয়টিতে অবশ্যই নতুন root / .my.cnf ফাইলকে নতুন মূল শংসাপত্রগুলি রেখে দিতে হবে। প্লেবুকের পরবর্তী রানগুলি ফাইল থেকে নতুন শংসাপত্রগুলি পড়ে সফল হবে। উত্তরযোগ্য-মাইএসকিএল_উজার_মডিউল, নোটগুলি

  • Note2:

    আপনি শংসাপত্রগুলি পাস করার সময় লগইন_পাসওয়ার্ড এবং লগইন_ইউজার উভয়ই প্রয়োজনীয়। যদি কেউ উপস্থিত না থাকে, মডিউলটি ~ / .my.cnf থেকে শংসাপত্রগুলি পড়ার চেষ্টা করবে এবং শেষ পর্যন্ত কোনও পাসওয়ার্ড ছাড়াই 'রুট' এর মাইএসকিউএল ডিফল্ট লগইনটি ব্যবহার করে ফিরে যাবে। উত্তরযোগ্য-মাইএসকিএল_উজার_মডিউল, নোটগুলি


আমি এই পদ্ধতিটি বেশ পছন্দ করি এবং এটি আমার উত্তরের সংস্করণ থেকে অনেক ভাল। এটি সম্ভবত গ্রহণযোগ্য উত্তর হওয়া উচিত।
ydaetskcoR

2
এটি সুবিধাজনক, তবে অনেক সিস্টেমে হোস্টস 127.0.0.1, লোকালহোস্ট, :: 1 এবং স্থানীয় হোস্টনাম যা-ই হোক না কেন, আসলে 4 টি 'রুট' ব্যবহারকারী তৈরি হয়েছে। উপরেরটি কেবল রুট @ লোকালহোস্টকে পরিবর্তন করে, ফাঁকা পাসওয়ার্ড সহ আরও তিনটি রুট অ্যাকাউন্ট রেখে।
রোবু

সব রুট ব্যবহারকারীদের তালিকা: mysql --database mysql --execute "select host from user where user = 'root';"এই পোস্টে এই উত্তরটির মতোই তবে সমস্ত পাসওয়ার্ড সেট করার কোড রয়েছে।
hlovdal

2

পরবর্তী ব্যক্তির জন্য যে এখানে কাছাকাছি উত্তর খুঁজছেন। গৃহীত উত্তরটি সত্য হলেও আপনি মাইএসকিউএল ৫.7 ব্যবহার করছেন তবে আপনাকে অতিরিক্ত পরিশ্রমী হতে হবে কারণ ডেমনাইজড মোডে (পরিষেবা) মাইএসকিএলডে কোনও বেনামে প্রবেশের অনুমতি নেই। পরিবর্তে আপনি একটি টেম্পেরি পাসওয়ার্ডের জন্য /var/log/mysqld.log স্ক্র্যাপ করা আবশ্যক যে কেউ লগইন_প্যাসওয়ার্ড = ydaetskcoR এ সেটি তৈরি করে ব্যবহার করার সিদ্ধান্ত নিয়েছে। এটি এমন একটি বৈশিষ্ট্য যা তারা ডেভোপোস্টরির 5.. 5. সংস্করণে প্রয়োগ করার সিদ্ধান্ত নিয়েছে তাই আপনি যদি এটি এড়াতে চান তবে এটি একটি পুরানো সংস্করণ (৫..6) ব্যবহার করে।

ডকুমেন্টেশন এখানে: https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_initialize-insecure

http://mysqlserverteam.com/initialize-your-mysql-5-7-instances-with-ease/


1

মাইএসকিউএলকে শক্ত করার জন্য একটি উত্তরযোগ্য প্লেবুক রয়েছে।

https://github.com/dev-sec/ansible-mysql-hardening

এটি কেবলমাত্র রুট পাসওয়ার্ড পরিবর্তন করে না, সার্ভারকে শক্ত করার জন্য কিছু অতিরিক্ত পদক্ষেপও সম্পাদন করে।

রিডমে ফাইলটি দেখুন।


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