You should setup a role with permissions you wanted, and assign user to that role,so it would be easier for you to manage that user and permissions in general.
"Almost anything" would include alter database, but you have to be aware what the user can do.
You could add a user permissions such as :
GRANT ALTER ON DATABASE::YourDatabase TO TestUser
DENY ALTER,SELECT,UPDATE,DELETE ON SCHEMA::ForbiddenSchema to TestUser
DENY ALTER ANY USER TO TestUser
Note that specifying database name you are limiting user only on that particular database.
To build your own permissions on a user/role take a look at this pdf: SQL Server Permissions Map