I would like to generate 1000's of ethereum addresses. And have access to the private keys. then i can assign each user their own address in my database. How would i go about this? Also is it possible without running my own ethereum node?
Accounts can be generated entirely off-line without ever connecting to the Internet (there are several questions about this on stack exchange), so yes, you could do it without running a node.
For this application, perhaps the best way is to use an hierarchical deterministic (HD) wallet. You can generate and store a single seed used to generate a whole family of addresses (this makes backing things up easier). This avoids having to suspend your service if you don't have time to back up new wallet keys (assuming you have other replication services in place to protect public key-account pairs).
On the other hand, why do you want to keep the private keys for your users? Is this for a service that interacts with the blockchain? In any case, if you're trying to protect users from bad key-storage practices, it might be easier from a management/security perspective to have fewer addresses (though there are arguments for more accounts, too); users can all hook into the same hot/cold wallet. In the case of an exchange, one could argue for a one-to-many or many-to-many relationship for wallets.
For any other purpose where you're not trying to protect users from bad practices, my short brainstorming session says it either doesn't make sense to be using the blockchain (just create a regular centralized service) or have users generate their own accounts and submit the account address to you to store. One of the advantages of Ethereum is "you are your own bank". Relying on someone else also reduces the utility of Ethereum (since users must now manage one more centralized account).
When there is no need for your service to require people to pay from their own wallet, like the service you offer has nothing to do with their wallets, why not look for a payment service provider which can handle cryptos? Or do you need anonymity?
Not promoting - don't hit me, but e.g. Coinbase and some others offer reception addresses and api which you can integrate. Less hassle for you and you can focus on your product.
Taking the responsibility for 1000s of keys and accounts does not sound what you really want to do here?
Additionally, for micropayments, platforms like iota seem more feasible or ropsten/lightning which work on top of ethereum and bitcoin, as you want to reduce transaction cost as much as possible.