Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Syntax error with emulating "create user if not exists"

Tags:

database

mysql

MySQL does not allow you to specify an if not exists clause in a create user statement (despite the fact that create table and create procedure do support this). There was a feature request for this in 2005 but the MySQL devs have done sod all about it, so it's probably not going to happen anytime soon:

http://bugs.mysql.com/bug.php?id=15287

I'm trying to emulate this functionality with the following statement:

if (select ifnull((select 1
                     from mysql.user
                    where User = 'recuser'
                      and Host = '%'), 0) = 0) then
  create user 'recuser'@'%' identified by password 'blah';
end if;

but MySQL complains about the syntax in the if statement - I can't see anything wrong with it, hopefully someone else can point out what the issue is.

Thanks!

like image 340
Ian Kemp Avatar asked Feb 28 '23 06:02

Ian Kemp


1 Answers

Denis answered your precise question, but there are other ways around your problem: see my answer to mysql create user only when the user doesn't exist (where there is also an example of a similar stored procedure as well)

like image 175
Tim Diggins Avatar answered Mar 05 '23 18:03

Tim Diggins