Чистый php, если нет Бд, то можно ли её создать?
Можно, но код, который создает БД при ошибке - это глупость. 
Так не делают. 

Можно создать отдельный скрипт для настройки окружения, который создаст БД и таблицы например. 
В этом скрипте просто не указывать 4-й параметр в mysqli_connect.
И дальше просто написать mysqli_query() c запросом создания таблицы.

Но в реальной жизни такие ситуации практически не встречаются. 
В отличие от ламерского опенсервера, на реальных серверах никто никогда не ходит в базу под рутом. А у того пользователя, который используется, тупо нет прав на создание БД.

spoilerИ отучайтесь уже писать этот говнокод, or die("Ошибка соединения с БД." . mysqli_error($link)); 
он и так-то всегда был признаком профнепригодности, а в современном РНР уже и вовсе не имеет смысла 
Обычно эволюция кода идет синхронно с обновлением схем в БД. Для этого есть инструменты типа liquibase/flyway. Они приводят в БД в состояние полного синхронизма с вашим репозитарием кода.  И то что у вас происходит (нет таблицы) - это ужас-ужас и надо срочно что-то менять в жизни. 

Вот так. Развивайтесь. Взрослейте. Хватит уже бегать в детских штанишках. Хорошая система должна трекать свои изменния. Берите лучшие практики которые есть сегодня. Создание таблицы в секции catch - это опасная практика которая кроме того вызывает еще один парадоксальный вопрос из серии - а что делать если exception возник внутри секции exception и так далее.