MySQL: проверьте, существует ли пользователь, и отбросьте его - PullRequest
79 голосов
/ 28 февраля 2009

Не существует стандартного способа проверить, существует ли пользователь MySQL, и основываясь на этом. Есть ли обходные пути для этого?

Редактировать: мне нужен прямой способ запустить это, не выдавая ошибку
например,

DROP USER test@localhost; :    

Ответы [ 13 ]

0 голосов
/ 09 сентября 2014

Сочетая ответ phyzome (который у меня не сработал сразу) с комментарием andreb (который объясняет, почему это не сработало), я получил этот, казалось бы, рабочий код, который временно отключает режим NO_AUTO_CREATE_USER, если он активен:

set @mode = @@SESSION.sql_mode;
set session sql_mode = replace(replace(@mode, 'NO_AUTO_CREATE_USER', ''), ',,', ',');
grant usage on *.* to 'myuser'@'%';
set session sql_mode = @mode;
drop user 'myuser'@'%';
0 голосов
/ 24 января 2014

Если у вас есть школьный сервер, на котором ученики много работали. Вы можете просто навести порядок:

delete from user where User != 'root' and User != 'admin';
delete from db where User != 'root' and User != 'admin';

delete from tables_priv;
delete from columns_priv;

flush privileges;
0 голосов
/ 28 февраля 2009

Если вы хотите удалить каплю из таблицы, если она существует, вы можете использовать команду DELETE, например:

 DELETE FROM users WHERE user_login = 'foobar'

Если строки не совпадают, это не ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...