如何通过 shell 脚本检查 MySQL 数据库是否存在?

如何通过 shell 脚本检查 MySQL 数据库是否存在?

mysqladmin -uroot create foo如果存在则返回退出状态 1 foo,否则返回 0,但如果数据库不存在,它当然也会创建数据库。有没有简单的方法可以简单地检查数据库是否存在?

答案1

我意识到这个问题很久以前就已经被回答过了,但是对我来说这样做似乎更清楚:

mysql -u root -e 'use mydbname'

如果数据库存在,则不会产生任何输出并以 returncode == 0 退出。

如果数据库才不是存在,这将产生一个错误消息标准错误并以 returncode == 1 退出。因此,您可以执行以下操作:

if ! mysql -u root -e 'use mydbname'; then
  ...do stuff to create database...
fi

它可以与 shell 脚本很好地运行,不需要对输出进行任何处理,也不依赖于本地文件系统访问。

答案2

mysql -e "SHOW DATABASES LIKE 'foo'" 应该可以帮助你。

http://dev.mysql.com/doc/refman/5.1/en/show-databases.html

答案3

MySQL 中的数据库是文件系统中的文件夹。这使得查找数据库是否存在变得非常容易:

test -d "/var/lib/mysql/databasename"

在本例中,/var/lib是 MySQL 的数据目录。此代码片段的优点在于它不需要运行 MySQL 守护程序,也不需要凭据。当然,运行该命令的用户必须被允许进入该目录。

答案4

有点不寻常,但是如果 foo 不存在则打印 1,否则打印 0:

mysqlshow -u root foo 2>&1 >/dev/null | awk ' { print /Unknown database/ }'

相关内容