কীভাবে মাইএসকিউএল দিয়ে ব্যবহারকারীর সুবিধাগুলি অনুলিপি করবেন?


12

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

উত্তর:


17

এর মতো একটি স্ক্রিপ্ট মাইএসকিএল ক্লায়েন্ট ক্লায়েন্টকে ব্যবহারকারীর অ্যাকাউন্টগুলি পুনরায় তৈরি করার জন্য আপনার প্রয়োজন হতে পারে এমন অনুদানের বিবৃতিগুলির একটি সিরিজ মুদ্রণ করতে ব্যবহার করবে। যদি আপনার .my.cnf আপনার ডাটাবেস শংসাপত্রগুলি সঞ্চিত থাকে তবে এই কমান্ডটি সেরা কাজ করবে

#!/bin/bash
# adapted from (http://www.pyrosoft.co.uk/blog/2006/10/18/show-grants-for-all-users-on-mysql/)
(
 mysql --batch --skip-column-names -e "SELECT user, host FROM user" mysql 
) | while read user host
do
  echo "# $user @ $host"
  mysql --batch --skip-column-names -e"SHOW GRANTS FOR '$user'@'$host'"
done

আপনি যদি মাইএসকিএল এর একটি সংস্করণ থেকে অন্য সংস্করণে ঝাঁপিয়ে পড়ে থাকেন তবে আপনি এটি কেবলমাত্র মাইএসকিএল ডাটাবেসের ডাম্পের পরিবর্তে ব্যবহার করতে চাইতে পারেন। মাইএসকিএল ডাটাবেসের স্কিমা মাঝে মধ্যে আপডেট হয়।

এটি আপনাকে পুনরায় তৈরি করতে চান এমন অ্যাকাউন্টগুলি বাছাই করতে এবং চয়ন করতে অনুমতি দেবে, যদি এমন কিছু ক্রাফ্ট থাকে যা আপনি মুছে ফেলতে চান।


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

IFS=$'\t'; while read user host; do
  echo "user:$user host:$host"
  mysql --batch --skip-column-names -e"SHOW GRANTS FOR '$user'@'$host'"
  echo ""
done < <(mysql --batch --skip-column-names -e "SELECT user, host FROM mysql.user")

3

এটি SHOW GRANTS;প্রতিটি ব্যবহারকারীর জন্য একটি ফাইল তৈরি করবে ।

তারপরে, প্রতিটি ব্যবহারকারীর প্রতিধ্বনি SHOW GRANTS;করুন এবং প্রতিটি লাইনে একটি সেমিকোলন যুক্ত করুন।

MYSQL_CONN="-uroot -prootpassword"
SQLSTMT="SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';')"
SQLSTMT="${SQLSTMT} FROM mysql.user WHERE user<>''"
mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" > /tmp/ShowGrants.sql
mysql ${MYSQL_CONN} -ANe < /tmp/ShowGrants.sql | sed 's/$/;/g' > MySQLUserGrants.sql
rm -f /tmp/ShowGrants.sql

আপনি একই জিনিসটি করতে এই সরঞ্জামগুলি ডাউনলোড এবং ব্যবহার করতে পারেন:

একবার চেষ্টা করে দেখো !!!


2

আমি বিশ্বাস করি আপনার mysqlডাটাবেস ব্যাক আপ এবং পুনরুদ্ধার করে এই ডেটা স্থানান্তর করতে সক্ষম হওয়া উচিত ।


বিশেষত mysql.user টেবিল
কোপস

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