2

My wiki collected a lot of spam over the past few months, so I've blocked it to only registered users. Unfortunately I never turned off user registration. Is it possible to block a lot of user accounts at once, or should I just restart?

2
  • Do you mean delete the user accounts? Jan 3 '12 at 23:41
  • That would work for me. I think MediaWiki may philosophically be designed to favor blocking over deletion.
    – Chris
    Jan 4 '12 at 21:29
1

The quickest and least invasive way to prevent a big list of registered users from making modifications is probably to do a bulk password change for the unwelcome users.

Assuming you're running a Unix-like, and that the list of folks you want to keep is relatively low:

eg., for MySQL:

mysql -p -u root -B wikidb -e 'select user_name from user;' | tee user.list
  • Remove the users you want to keep from the user.list file.

  • Use the MediaWiki password command-line tool to change passwords to something random.

eg.

cd [wiki-docroot]/maintenance/
while read wikiuser; do 
    echo $wikiuser; 
    php ./changePassword.php $wikiuser BOGUS%PASSblahblah77; 
done <user.list

Generating a different password for each user is left as an exercise for the reader. :-)

2
  • Interesting way to do it. It's very cool to see how flexible shell scripts can be. EDIT: found it, a list of command line tools is here: mediawiki.org/wiki/Manual:Maintenance_scripts
    – Chris
    Jan 4 '12 at 21:32
  • 1
    Yep, a nice list of command-line tools there. Too bad there isn't a bulk password changer among them. Jan 5 '12 at 3:01
0

Connect to your mysql server:

mysql -h DBSERVER_HOST -u wikiuser wikidb -p

Enter your password at the prompt. Once in mysql prompt, search for the user

mysql> select user_id,user_name from user;

+---------+------------+
| user_id | user_name  |
+---------+------------+
|       9 | spammer    |
|       7 | r2d2       |
|       1 | admin      |
+---------+------------+

Delete every "user_id" you need with:

mysql> delete from user where user_id in(7,9);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.