Each of my microservices has their own database instance. Only user account names have to be shared between services. As explained in chapter 4 Scalable Architectures, when a new user account is created the authentication service sends a message to the other services and tells them to create an object in their database representing that player account.
User accounts only consist of a username and password. Only the authentication service knows of the users passwords which are encrypted.
When a user logs in, the authentication service will return a token to the user they can use to authenticate with other services. These other services do not store this token anyway, the other services only know of the accounts username in the database to check against when retrieving user data like owned items.
The authentication database holds the users username and password and also their authority levels. The authority levels determine what a user can or can not do.
The auction database holds all ongoing and past auctions. It keeps track of the start and end time. Each auction has a list of bids that players have posted on that auction. Filter options are used when a user sends a request to filter results when a user sends a request to retrieve ongoing auctions.
The inventory database keeps track of the items a player owns and which slot these items are using. Slot usage is stored so users can sort the inventory to their liking.
The currency database keeps track of how much money each user has and how much of their money is currently floating. Currency is considered floating when it is invested in an ongoing auction. The investments are also stored.