mysql – criar usuário se não existir?

Infelizmente não existe tal coisa, então se você tentar criar um usuário que já existe, você obterá um erro. Mas há uma boa solução alternativa.

GRANT ALL PRIVILEGES ON `database`.* TO 'user'@'localhost';

… fará exatamente isso. Se o usuário existir, os privilégios serão concedidos, se o usuário não existir, ele será criado primeiro.

Cuidado com o modo sql em sua configuração mysql. Para que isso funcione, a configuração não deve conter NO_AUTO_CREATE_USER.

Exemplo:

sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"