Я понимаю, что на это ответили давным-давно, но мне кажется, что сделать это намного чище:
mysql -u root -e 'use mydbname'
Если база данных существует, это не приведет к выводу и завершится с кодом возврата == 0.
Если база данных не существует, это выдаст сообщение об ошибке на stderr и завершится с кодом возврата == 1. Таким образом, вы должны сделать что-то вроде этого:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
Это прекрасно работает со сценариями оболочки, не требует какой-либо обработки вывода и не требует наличия доступа к локальной файловой системе.
mysql -e "SHOW DATABASES LIKE 'foo'"
должен помочь вам.http://dev.mysql.com/doc/refman/5.1/en/show-databases.html
источник
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
.Базы данных в MySQL - это папки в файловой системе. Это облегчает поиск существования базы данных:
В данном случае
/var/lib
это datadir MySQL. Хорошая особенность этого фрагмента в том, что ему не понадобится работающий демон MySQL, и при этом ему не нужны учетные данные. Конечно, пользователь, выполняющий команду, должен иметь возможность спускаться в этот каталог.источник
С http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/ это больше похоже на то, что я хотел:
источник
Немного странно, но это выведет 1, если foo не существует, 0 в противном случае:
источник
Я думаю, что вы можете проверить, если ваша необходимая база данных работает простым способом в любой оболочке
а затем проверьте
$?
код выходаЭта команда пытается ваши конкретные учетные данные (USERNAME и PASSWORD) для подключения к выбранной базе данных и
exit
немедленно. Таким образом, если соединение в порядке, код выхода будет 0, и ненулевой в противном случае.Конечно, вы можете перенаправить любой вывод в
/dev/null
случае необходимостиPS. Этот метод очень полезен для проверки состояния эфемерных хранилищ, которые так быстры и популярны в наши дни. Если база данных не может быть подключена, вы должны начать восстановление как можно скорее.
источник