MySQL错误检查显示误报

时间:2013-06-18 04:09:22

标签: mysql bash

我正在编写一个脚本,对MySQL数据库进行一系列错误检查。

首先,它使用root凭据检查数据库是否存在:

until [[ ! -z "`mysql -h $dbHost -u $dbRoot -p$mysqlRootPwd -qfsBe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='$dbName'" 2>&1`" ]];

然后,它使用相同的检查来确保指定的用户实际上有权使用数据库

until [[ ! -z "`mysql -h $dbHost -u $dbUser -p$dbPass -qfsBe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='$dbName'" 2>&1`" ]];

第二个是假阳性,但不是在自己运行时。这让我相信,由于某种原因,它仍在使用root凭据进行检查。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我最终通过使用mysqlshow命令来解决这个问题。

dbTestUser=mysqlshow --host=$dbHost --user=$dbUser --password=$dbPass $dbName| grep -v Wildcard | grep -o $dbName

dbTestRoot=mysqlshow --host=$dbHost --user=$dbRoot --password=$mysqlRootPwd $dbName| grep -v Wildcard | grep -o $dbName

然后if [ -z $dbTestUser ]验证测试是否正常运行。