Bunun gibi bir komut dosyası, kullanıcı hesaplarını yeniden oluşturmak için kullanmanız gereken bir dizi hibe beyanı yazdırmak için mysql cli istemcisini kullanır. Bu komut en iyi şekilde çalışır. Veritabanı kimlik bilgilerinizde .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
MySQL'in bir sürümünden diğerine atlıyorsanız, bunu mysql veritabanının basit bir dökümü yerine kullanmak isteyebilirsiniz. Mysql veritabanının şeması zaman zaman güncellenir.
Bu, ortadan kaldırmak istediğiniz bir cruft varsa, yeniden oluşturmak istediğiniz hesapları seçmenize ve seçmenize de olanak tanır.
Son zamanlarda read
IFS varsayılan olarak bir ayırıcı olarak boşluk karakteri içerdiğinden, kafasında karışık adlar içeren bir kullanıcı üzerinde kullanıyordum . Sistem garip kullanıcı adlarında daha iyi iş gibi görünen yeni ve geliştirilmiş komutum.
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")