实战:判断mysql中当前用户的连接数-分组筛选

#connets.sh

#!/bin/sh

#[email protected]

#根据输入参数u或d来显示出对应的用户名或数据库名中用户的连接数.

#也可以输入u 具体用户名或d 具体数据库名做进一步的分组筛选

#set mysql evn

MYSQL_USER=system  #mysql的用户名

MYSQL_PASS=‘password‘  #mysql的登录用户密码

MYSQL_HOST=192.168.2.188

export black=‘\033[0m‘

export boldblack=‘\033[1;0m‘

export red=‘\033[31m‘

export boldred=‘\033[1;31m‘

export green=‘\033[32m‘

export boldgreen=‘\033[1;32m‘

export yellow=‘\033[33m‘

export boldyellow=‘\033[1;33m‘

export blue=‘\033[34m‘

export boldblue=‘\033[1;34m‘

export magenta=‘\033[35m‘

export boldmagenta=‘\033[1;35m‘

export cyan=‘\033[36m‘

export boldcyan=‘\033[1;36m‘

export white=‘\033[37m‘

export boldwhite=‘\033[1;37m‘

cecho ()

## -- Function to easliy print colored text -- ##

# Color-echo.

# 参数 $1 = message

# 参数 $2 = color

{

local default_msg="No message passed."

message=${1:-$default_msg} # 如果$1没有输入则为默认值default_msg.

color=${2:-black}  # 如果$1没有输入则为默认值black.

case $color in

black)

printf "$black" ;;

boldblack)

printf "$boldblack" ;;

red)

printf "$red" ;;

boldred)

printf "$boldred" ;;

green)

printf "$green" ;;

boldgreen)

printf "$boldgreen" ;;

yellow)

printf "$yellow" ;;

boldyellow)

printf "$boldyellow" ;;

blue)

printf "$blue" ;;

boldblue)

printf "$boldblue" ;;

magenta)

printf "$magenta" ;;

boldmagenta)

printf "$boldmagenta" ;;

cyan)

printf "$cyan" ;;

boldcyan)

printf "$boldcyan" ;;

white)

printf "$white" ;;

boldwhite)

printf "$boldwhite" ;;

esac

printf "%s\n"  "$message"

tput sgr0   # tput sgr0即恢复默认值

printf "$black"

return

}

cechon ()

# Color-echo.

# 参数1 $1 = message

# 参数2 $2 = color

{

local default_msg="No message passed."

# Doesn‘t really need to be a local variable.

message=${1:-$default_msg} # 如果$1没有输入则为默认值default_msg.

color=${2:-black}  # 如果$1没有输入则为默认值black.

case $color in

black)

printf "$black" ;;

boldblack)

printf "$boldblack" ;;

red)

printf "$red" ;;

boldred)

printf "$boldred" ;;

green)

printf "$green" ;;

boldgreen)

printf "$boldgreen" ;;

yellow)

printf "$yellow" ;;

boldyellow)

printf "$boldyellow" ;;

blue)

printf "$blue" ;;

boldblue)

printf "$boldblue" ;;

magenta)

printf "$magenta" ;;

boldmagenta)

printf "$boldmagenta" ;;

cyan)

printf "$cyan" ;;

boldcyan)

printf "$boldcyan" ;;

white)

printf "$white" ;;

boldwhite)

printf "$boldwhite" ;;

esac

printf "%s"  "$message"

tput sgr0   # tput sgr0即恢复默认值

printf "$black"

return

}

if [ "$#" -lt 1 ];then

echo "**********************************"

echo "you must input paraters"

echo "**********************************"

echo "USAGE01: $0 d |$0 d database_name"

echo "eg01: $0 d|$0 d mysql"

echo "USAGE02: $0 u  |$0 u username"

echo "eg02: $0 u  |$0 u wind"

exit 1;

fi

#Case conversion

ipt=`echo $1 |tr ‘[a-z]‘ ‘[A-Z]‘`

#source /usr/local/mysql/scripts/mysql_env.ini

logfiledate_init="tmpinit.`date +%Y%m%d%H%M%S`.txt"

logfiledate_midd="tmpmidd.`date +%Y%m%d%H%M%S`.txt"

judegedate_01="judegedate01.`date +%Y%m%d%H%M%S`.txt"

judegedate_02="judegedate02.`date +%Y%m%d%H%M%S`.txt"

mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"show processlist;" >${logfiledate_init}

if [ "$#" -eq 1 ]; then

if [ "$ipt" = ‘D‘ ];then

awk ‘{tt[$4]++} BEGIN { printf  "%-20s %-20s\n" ,"dbname","connect";} END{for (i in tt) printf "%-20s %-20s\n" ,i,tt[i]}‘ ${logfiledate_init}  | grep -v "NULL"

elif  [ "$ipt" = ‘U‘ ];then

awk ‘{tt[$2]++} BEGIN { printf  "%-20s %-20s\n" ,"username","connect";} END{for (i in tt) printf "%-20s %-20s\n" ,i,tt[i]}‘ ${logfiledate_init}  | grep -v "NULL"

else

cechon "输入错误!" red

echo "                              "

fi

elif [ "$#" -eq 2 ]; then

grep -i $2  ${logfiledate_init} > ${logfiledate_midd}

if [ "$ipt" = ‘D‘  ];then

SCHEMA_JUDEGE01="select schema_name from information_schema.schemata where schema_name=‘$2‘;"

mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${SCHEMA_JUDEGE01}" >${judegedate_01}

if [ ! -s "${judegedate_01}" ];then

cechon "you input schema_name $2 not exits,pleae check your schema_name" red

rm -rf ${SCHEMA_JUDEGE01}

exit 0

else

awk ‘{tt[$4]++} BEGIN { printf  "%-20s %-20s\n" ,"dbname","connect";} END{for (i in tt) printf "%-20s %-20s\n" ,i,tt[i]}‘ ${logfiledate_midd}  | grep -v "NULL"

fi

elif  [ "$ipt" = ‘U‘ ];then

SCHEMA_JUDEGE02="select user from mysql.user where user=‘$2‘;"

mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${SCHEMA_JUDEGE02}" >${judegedate_02}

if [ ! -s "${judegedate_02}" ];then

cechon "you input username $2 not exits,pleae check your user_name" red

rm -rf ${SCHEMA_JUDEGE02}

exit 0

else

awk ‘{tt[$2]++} BEGIN { printf  "%-20s %-20s\n" ,"username","connect";} END{for (i in tt) printf "%-20s %-20s\n" ,i,tt[i]}‘ ${logfiledate_midd}  | grep -v "NULL"

fi

else

cechon  "输入错误!" red

echo "                              "

fi

fi

#清除临时文件

rm -rf ${logfiledate_init}

rm -rf ${logfiledate_midd}

rm -rf ${judegedate_01}

rm -rf ${judegedate_02}

实战:判断mysql中当前用户的连接数-分组筛选

时间: 2024-10-05 16:15:25

实战:判断mysql中当前用户的连接数-分组筛选的相关文章

mysql中的用户管理

由于工作的需要,要新建一个mysql的用户,在查阅了mysql的手册之后,做了如下的一些方法记录. #新增一个mysql用户custom,密码为obscure,只能从本机访问和操作数据库testGRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on test.* TO 'custom'@'localhost' IDENTIFIED by 'obscure';#执行完成后会发现user表中多了一条记录,db表中也多了一条记录,并且权限是写入db表的 GRA

限制MySQL数据库单个用户最大连接数等的方法

服务器上总有一些网站用户的连接数过大,而影响了其他的网站的正常使用,那么如何把某一条臭鱼限制在自己的一亩三分地呢?限制MySQL数据库单个用户最大连接数等的方法下面我来说一下方法和原理: 1.对于Linux和Uinx操作系统需要找到my.cnf,对于windows操作系统需要找到my.ini 2.因为my文件是MySQL的配置文件,我们以前只知道他是对MySQL数据库的整体控制,其实他还可以对单个用户进行限制. 3.将my.cnf或my.ini下载下来,编辑,可以把多余项去掉,加入: max_c

MySql中添加用户/删除用户

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 这样就创建了一个名为:test 密码为:

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 这样就创建了一个名为:test 密码为:

MySQL中创建用户分配权限

测试环境:CentOS6.8 和 MySQL5.5.4 一 需求 在项目开发的过程中可能需要开放自己的数据库给别人,但是出于安全的考虑,不能同时开放自己服务器里的其他数据库.那么可以新建一个用户,赋予该用户特定的数据库权限. 二 实现 1 新建用户 // root 用户登陆 MySQL mysql -uroot -p Enter password: // 新建用户 mysql>insert into mysql.user(Host,User,Password) values("localh

删除mysql中root用户恢复方法

1.# service mysqld stop  #停止mysql数据库服务 2.# service mysqld start --skip-grant-tables #跳过授权表启动mysql数据库服务 3.# mysql -p     #进入mysql数据库添加root用户并授权 mysql> use mysql; mysql> select host,user from user; mysql> update user set password=password("new

查看MySql中每个IP的连接数

要统计数据库的连接数,我们通常情况下是统计总数,没有细分到每个IP上.现在要监控每个IP的连接数,实现方式如下: 1 select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip; 上图为远程登录MySql服务器时,执行该命令的结果演示.

MySQL中创建用户、创建数据库、表并付给用户权限

---创建数据库 CREATE DATABASE zdb_mysql; ---创建用户: CREATE USER 'zdb_mysql'@'localhost' IDENTIFIED BY 'zdb_mysql'; #本地登录 ---附权限: grant all privileges on zdb_mysql.* to 'zdb_mysql' @'localhost' identified by 'zdb_mysql'; flush privileges; #刷新系统权限表 ---创建表 cre

mysql中类似oracle的over分组实现

今天,看到别人问问题,需求大概是这样的. id s 开始时间 结束时间 1 20 2001-01-01 08:10:20 2001-01-01 08:10:40 1 9 2001-01-01 08:10:41 2001-01-01 08:10:50 1 60 2001-01-01 08:10:51 2001-01-01 08:11:51 1 2 2001-01-01 08:12:51 2001-01-01 08:12:53 2 51 2001-01-01 08:10:00 2001-01-01