数据库配额
,先计算mysql数据库目录下的每个数据库大小,然后与容量限制进行比较,如果超过容量,则revoke该数据库的insert权限,让用户数据库不能再增长。 
脚本如下: 
###begin srcript --author pat.dong#### 
# 如果用户空间超过,此文件将会作为邮件的内容发送到用户信箱 
sizeover="/etc/sizeover.log" 
dblist="/tmp/dblist" 
mysql_path=/usr/local/mysql/bin 
# 将数据库名称输出 
$mysql_path/mysql -uroot -e "show databases">$dblist 
# 删除第一栏 "Database" 
sed 1d $dblist >/tmp/tmp123456 
cat /tmp/tmp123456 >$dblist 
# 数据库的数据路径 
DB_PATH="/www/mysql" 
# 用户所能使用的最大空间 单位 kb 
LIMIT_SIZE=2048 
#mysql_quota文件记录每个数据库的配额,内容如下: 
####mysql_quota file begin###### 
cn-ce 10000 
cnmr 2048 
fulin 2048 
ishunde 2048 
jljust 15000 
####end mysql_quota##### 
# mysql 这个数据库不必改 
cat $dblist | while read b; do 
if [ $b != "mysql" ] && [ -d $DB_PATH/$b ] 
then 
SIZE=` $DB_PATH/$b -sk|awk {'print $1'};` 
LIMIT_SIZE=`cat quota |grep $b|awk {'print $2'}` 
echo "User Size is "$SIZE",Limt Size is "$LIMIT_SIZE; 
if [ $SIZE -gt $LIMIT_SIZE ] 
then 
# mysql -uroot -prootpwd -n -e "revoke insert on $b.* from $b@hostname" 
# sendmail [email protected] < $sizeover 
echo $b" is over quota"; 
else 
# mysql -uroot -prootpwd -n -e "grant insert on $b.* to $b@hostname" 
echo $b" is no over quota"; 
fi 
# mysql -uroot -prootpwd -n -e "flush privileges" 
fi 
done 
####end script#####
