Use transaction in setup script. Use better getRandomString for salt.