I really hope I'm not overlooking something simple...
I'm writing a cleanup script to remove database items created by my
application. One of the things I would like to remove are all user
accounts created through my application... This is proving to be
harder than it sounds.
I should note that it's a mysql script I plan to have the
administrator run as 'mysql -u root -p < uninstall.txt' - therefore
I'm limited in what I can do (to some degree)
After unsuccessfully trying to solve this through a variety of other
means, I've come to the conclusion that if I record all of the
usernames I create in a table, then I might be able to iterate over
that table and drop my users. This means creating a stored procedure
temporarily for the sole purpose of getting the benefits of CURSORs..
So I've come up with this:
DELIMITER //
CREATE PROCEDURE deleteAllUsers() DETERMINISTIC MODIFIES SQL DATA
BEGIN
DECLARE name VARCHAR(12);
DECLARE done INT DEFAULT 0;
DECLARE allUsers CURSOR FOR SELECT username FROM user WHERE active = TRUE;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN allUsers;
REPEAT
FETCH allUsers INTO name;
DROP USER name;
UNTIL done END REPEAT;
CLOSE allUsers;
END;
//
DELIMITER ;
It looks simple enough, however DROP USER tries to drop 'name' rather
than the next username in the list :(
I feel like I'm overlooking something really simple - however for the
life of me I can't figure it out. Is it possible to use DROP USER with
a variable name in a stored procedure? If not, is there some way to
drop a bunch of users given a table of usernames? Perhaps this problem
has only ever been tackled using a higher level language - but I was
hoping to solve it in a little mysql script.
Thanks. Hope you have a great 2008!
--
Eddie Cornejo
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GIT d? s: a- C+++ UL+++ P++ L++ E- W+ N- o K- w++
O M-- V PS+ PE Y PGP++ t 5 X+ R tv-- b+ DI++++ D++
G e++ h r+++ y+++
------END GEEK CODE BLOCK------
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]