mysql 监测安全脚本

#!/bin/bash
# 使用方法: ./mysql.sh "主机名/IP" "端口" "用户名" "密码"   >   "输出文件"

if [ $# == 4 ]
then
	MYSQL_HOST=$1
	MYSQL_PORT=$2
	MYSQL_USER=$3
	MYSQL_PWD=$4
elif [ $# == 3 ]
then
	MYSQL_HOST=$1
	MYSQL_PORT=3306
	MYSQL_USER=$2
	MYSQL_PWD=$3
else
	echo "Usage:"
	echo "	$0 hostname port username password > output_file";
	echo "	$0 hostname username password > output_file";
	exit;
fi


#检查进程权限
echo "[>]Running User:"
ps -aux|grep mysql


MYSQL_DATA=`echo "select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='DATADIR';"|mysql --disable-pager -N -h $MYSQL_HOST -u $MYSQL_USER --password=$MYSQL_PWD`
echo "[>]DataPath: $MYSQL_DATA"
ls -al $MYSQL_DATA

MYSQL_BASE=`echo "select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='BASEDIR';"|mysql --disable-pager -N -h $MYSQL_HOST -u $MYSQL_USER --password=$MYSQL_PWD`
echo ">>BasePath: $MYSQL_BASE"
if [ $MYSQL_BASE = '/usr/' ]
then
	rpm -qa|grep mysql|grep server|xargs rpm -ql|xargs ls -al
else
	ls -al $MYSQL_BASE
fi

mysql -t -h $MYSQL_HOST -u $MYSQL_USER --password=$MYSQL_PWD <<EOF
-- 获取MYSQL版本信息
select @@version;

-- 获取当前的用户
select user();

-- 获取日志设置
show variables like 'log%';

-- 获取SSL设置
show variables like '%ssl%';

-- 获取用户列表,ssl设置和连接的限制设置
select Host,User,password,ssl_type,ssl_cipher,x509_issuer,x509_subject,max_questions,max_updates,max_connections,max_user_connections from mysql.user;

-- 获取相同用户和相同密码的数量
select 'common',count(distinct concat_ws('@',user,host)) as user,count(distinct password) as pwd from mysql.user;

-- 获取密码策略
show variables like 'validate_password%';

-- 超时查询
show global variables like '%timeout';


-- 获取文件权限开启状态
select VARIABLE_NAME,VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='LOCAL_INFILE';


-- show_compatibility_56打开
--set global show_compatibility_56=on;


-- 确保只有管理员账号有所有数据库的访问权限
SELECT user, host FROM mysql.user WHERE (Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y') OR (Delete_priv = 'Y') OR (Create_priv = 'Y') OR (Drop_priv = 'Y');

-- 口令复杂度
show variables like '%password%';

-- 空口令用户
SELECT User,host FROM mysql.user WHERE authentication_string='';

-- 匿名账户
SELECT user,host FROM mysql.user WHERE user = '';


确保用户不允许所有ip访问
SELECT user, host FROM mysql.user WHERE host = '%';




-- 获取初始化连接执行语句
select VARIABLE_NAME,VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='INIT_CONNECT';
EOF


echo "select concat('show grants for  \`',User,'\`@\`',Host,'\`;') from mysql.user;"|mysql --disable-pager -N -h $MYSQL_HOST -u $MYSQL_USER --password=$MYSQL_PWD|mysql -t -h $MYSQL_HOST -u $MYSQL_USER --password=$MYSQL_PWD

  

转载于:https://www.cnblogs.com/wujf-myblog/p/11504482.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值