我正在编写一个脚本,对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凭据进行检查。
有什么想法吗?
答案 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 ]
验证测试是否正常运行。