A database, users and hostnames can only be created via the Control Panel.
However the database is only a container for tables so the 'database' need not have a specific name since you would enter the database name, along with other credentials, into the specific program requiring a database. Because a program called 'Gallery' needs a database it does not necessarily have to be called 'gallery.db'. It could just as easily be called 'tom.db', 'dick.db' or '12345.db'.
So by using table prefixes you could run several programs out of one 'database'. Of course when you have unlimited databases as with DH then in practice you maintain one database per program.
What all this means is that there is no reason why you could not prepare say 6 databases beforehand,for your friend, calling them one,two three or Apple,Pear Lemon and so on. You would also be able to create user/password/hostname credentials beforehand as well. Since new MySQL hostnames can require propagation time then by preparing your database collection early then any new hostnames would be ready for action.
Opinions are my own views, not DreamHosts'.
I am NOT a DreamHost employee OK! :@
Act on my advice at your own risk!