Нет, вам не нужно закрывать что-либо, НО соединение. В спецификациях JDBC, закрывающих любой более высокий объект, автоматически закрываются нижние объекты. Закрытие Connection
закроет любое Statement
s, созданное соединением. Закрытие любого Statement
закроет все ResultSet
s, созданные этим Statement
. Не имеет значения, является ли Connection
объединенным или нет. Даже общее соединение должно очищаться, прежде чем возвращаться в бассейн.
Конечно, у вас могут быть длинные вложенные циклы на Connection
, создающие множество утверждений, а затем их закрыть. Я почти никогда не закрываю ResultSet
, хотя, кажется чрезмерным при закрытии Statement
или Connection
ЗАКРЫВАЕТ их.
У меня это сработало:
GRANT USAGE ON *.* TO 'username'@'localhost';
DROP USER 'username'@'localhost';
Это создает пользователя, если он еще не существует (и предоставляет ему безобидную привилегию), а затем удаляет его в любом случае. Решение найдено здесь: http://bugs.mysql.com/bug.php?id=19166
Обновления: @Hao рекомендует добавить ИДЕНТИФИЦИРОВАНО
; @andreb (в комментариях) предлагает отключить NO_AUTO_CREATE_USER
.
Найденный ответом на это от одного из форумов MySQL. We’ll должен использовать процедуру для удаления пользователя.
Пользователь здесь является “test” и “databaseName” имя базы данных.
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ANSI';
USE databaseName
;
DROP PROCEDURE IF EXISTS databaseName
.drop_user_if_exists
;
DELIMITER $
CREATE PROCEDURE databaseName
.drop_user_if_exists
()
BEGIN
DECLARE foo BIGINT DEFAULT 0 ;
SELECT COUNT(*)
INTO foo
FROM mysql
.user
WHERE User
= 'test' and Host
= 'localhost';
IF foo > 0 THEN
DROP USER 'test'@'localhost' ;
END IF;
END ;$
DELIMITER ;
CALL databaseName
.drop_user_if_exists
() ;
DROP PROCEDURE IF EXISTS databaseName
.drop_users_if_exists
;
SET SQL_MODE=@OLD_SQL_MODE ;
CREATE USER 'test'@'localhost' IDENTIFIED BY 'a';
GRANT ALL PRIVILEGES ON databaseName.* TO 'test'@'localhost'
WITH GRANT OPTION
Если Вы подразумеваете, что хотите удалить отбрасывание из таблицы, если это существует, можно использовать эти DELETE
команда, например:
DELETE FROM users WHERE user_login = 'foobar'
, Если никакие строки не соответствуют, это не ошибка.
в терминале сделайте:
sudo mysql -u root -p
вводят пароль.
select user from mysql.user;
теперь удаляют пользовательскую 'the_username'
DROP USER the_unername;
замену 'the_username' с пользователем, которого Вы хотите удалить.