এর মতো একটি স্ক্রিপ্ট মাইএসকিএল ক্লায়েন্ট ক্লায়েন্টকে ব্যবহারকারীর অ্যাকাউন্টগুলি পুনরায় তৈরি করার জন্য আপনার প্রয়োজন হতে পারে এমন অনুদানের বিবৃতিগুলির একটি সিরিজ মুদ্রণ করতে ব্যবহার করবে। যদি আপনার .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")