lar*_*sks 49
我意识到这是很久以前的回答,但对我来说这样做似乎更干净:
mysql -u root -e 'use mydbname'
Run Code Online (Sandbox Code Playgroud)
如果数据库存在,这将不会产生任何输出并以返回码 == 0 退出。
如果数据库不存在,这将在stderr上产生一条错误消息并以 returncode == 1 退出。 所以你会做这样的事情:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
Run Code Online (Sandbox Code Playgroud)
这可以很好地与 shell 脚本一起使用,不需要对输出进行任何处理,并且不依赖于具有本地文件系统访问权限。
Dom*_*Dom 11
mysql -e "SHOW DATABASES LIKE 'foo'"
应该可以帮助你。
http://dev.mysql.com/doc/refman/5.1/en/show-databases.html
MySQL 中的数据库是文件系统中的文件夹。这使得查找数据库是否存在变得非常容易:
test -d "/var/lib/mysql/databasename"
Run Code Online (Sandbox Code Playgroud)
在本例中,/var/lib是 MySQL 的 datadir。这个片段的好处是它不需要运行 MySQL 守护程序,也不需要凭据。当然,必须允许运行该命令的用户进入该目录。
小智 7
从http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/这更类似于我想要的:
DBNAME="dblookingfor"
DBEXISTS=$(mysql --batch --skip-column-names -e "SHOW DATABASES LIKE '"$DBNAME"';" | grep "$DBNAME" > /dev/null; echo "$?")
if [ $DBEXISTS -eq 0 ];then
echo "A database with the name $DBNAME already exists."
else
echo " database $DBNAME does not exist."
fi
Run Code Online (Sandbox Code Playgroud)