azerothcore-armory
azerothcore-armory copied to clipboard
Docker configuration clarification, Auth database errors
Your question
I've got this servier running in Docker, however when I open the page I get this error:
DataTables warning: table id=results - Ajax error. For more information about this error, please see http://datatables.net/tn/7
Logs from docker show:
[INFO]: Loading config...
[INFO]: Loading data files...
[INFO]: Connecting to databases...
[INFO]: Starting server...
[INFO]: Server is listening on 0.0.0.0:48733.
[HTTP]: GET / 200 - ID 1ba72625-e80a-4bd9-a754-b8edcb746d05 -
IP 10.88.0.1 - 24.532 ms
[HTTP]: GET /css/armory.css 200 - ID ddcc65dc-5630-4573-8f23-e
19b172b533c - IP 10.88.0.1 - 0.893 ms
[HTTP]: GET /css/bulma.min.css 200 - ID ed369447-b01f-4e2d-acb
1-0694622ee00f - IP 10.88.0.1 - 4.081 ms
[HTTP]: GET /css/index.css 304 - ID 7f5bbdd0-25ac-4e08-9295-a2
0325360335 - IP 10.88.0.1 - 0.271 ms
[HTTP]: GET /css/datatables.css 304 - ID 2154c835-1aee-49a5-92
6f-15f8cf4161be - IP 10.88.0.1 - 0.208 ms
[HTTP]: GET /favicon.ico 404 - ID 8b150911-12ca-4a7c-9468-b528
e5d51079 - IP 10.88.0.1 - 14.380 ms
[ERROR]: Error on request 2bc07a24-c9fa-42cd-8a94-797d1778910e. Error: SELECT command denied to user 'acore'@'10.88.0.1' for table `acore_auth`.`accou
nt_access`
at PromisePool.query (/node_modules/mysql2/promise.js:341:22)
at DataTablesSsp.<anonymous> (/src/armory/DataTablesSsp.ts:207:30)
at step (/build/armory/DataTablesSsp.js:33:23)
at Object.next (/build/armory/DataTablesSsp.js:14:53)
at /build/armory/DataTablesSsp.js:8:71
at new Promise (<anonymous>)
at __awaiter (/build/armory/DataTablesSsp.js:4:12)
at DataTablesSsp.run (/build/armory/DataTablesSsp.js:159:16)
at IndexController.<anonymous> (/src/armory/controllers/IndexController.ts:58:67)
at step (/build/armory/controllers/IndexController.js:44:23)
[2024-09-04 03:07:34:734] [HTTP]: GET /search?draw=1&columns%5B0%5D%5Bdata%5D=0&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=1&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=2&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=3&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=false&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B4%5D%5Bdata%5D=4&columns%5B4%5D%5Bname%5D=&columns%5B4%5D%5Bsearchable%5D=false&columns%5B4%5D%5Borderable%5D=true&columns%5B4%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B4%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B5%5D%5Bdata%5D=5&columns%5B5%5D%5Bname%5D=&columns%5B5%5D%5Bsearchable%5D=false&columns%5B5%5D%5Borderable%5D=true&columns%5B5%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B5%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=0&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1725419254293 500 - ID 2bc07a24-c9fa-42cd-8a94-797d1778910e - IP 10.88.0.1 - 24.365 ms
The Docker logs lead me to believe that there is a problem with the database, however, I can log into the database from within the container no problem using this command to verify the credientials are correct:
mysql -u $ACORE_ARMORY_REALMS__0__AUTH_DATABASE__USER -p$ACORE_ARMORY_REALMS__0__AUTH_DATABASE__PASSWORD -h $ACORE_ARMORY_REALMS__0__AUTH_DATABASE__HOST -P $ACORE_ARMORY_REALMS__0__AUTH_DATABASE__PORT $ACORE_ARMORY_REALMS__0__AUTH_DATABASE
My configs look like this, with basically all defaults to test that it works:
ACORE_ARMORY_AOWOW_URL="https://wowgaming.altervista.org/aowow";
ACORE_ARMORY_WEBSITE_URL="https://mywebsite.com";
ACORE_ARMORY_WEBSITE_NAME="My Website";
ACORE_ARMORY_WEBSITE_ROOT="";
ACORE_ARMORY_IFRAME_MODE__ENABLED="0";
ACORE_ARMORY_IFRAME_MODE__URL="https://mywebsite.com/armory";
ACORE_ARMORY_LOAD_DBCS="1";
ACORE_ARMORY_HIDE_GAME_MASTERS="1";
ACORE_ARMORY_TRANSMOG_MODULE="0";
ACORE_ARMORY_USE_ZAM_CDN="0";
ACORE_ARMORY_REALMS__0__NAME="AzerothCore";
ACORE_ARMORY_REALMS__0__REALM_ID="1";
ACORE_ARMORY_REALMS__0__AUTH_DATABASE="acore_auth";
ACORE_ARMORY_REALMS__0__AUTH_DATABASE__HOST="AUTHDBHOST";
ACORE_ARMORY_REALMS__0__AUTH_DATABASE__PORT="3056";
ACORE_ARMORY_REALMS__0__AUTH_DATABASE__USER="acore";
ACORE_ARMORY_REALMS__0__AUTH_DATABASE__PASSWORD="XXXXXXXXXXXXXX";
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__HOST="CHARDBHOST";
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__PORT="3058";
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__USER="acore";
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__PASSWORD="XXXXXXXXX";
ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__DATABASE="acore_characters";
ACORE_ARMORY_WORLD_DATABASE__HOST="WORLDBHOST"
ACORE_ARMORY_WORLD_DATABASE__PORT="3059";
ACORE_ARMORY_WORLD_DATABASE__USER="acore";
ACORE_ARMORY_WORLD_DATABASE__PASSWORD="XXXXXXXXXXXXXXXX";
ACORE_ARMORY_WORLD_DATABASE__DATABASE="acore_world";
ACORE_ARMORY_DB_QUERY_TIMEOUT="10000";
There is only a setting: "ACORE_ARMORY_REALMS__0__AUTH_DATABASE" but the example env file doesn't have a place to put the host, port, user, pass so I added them in using the same schema as the other database configurations, but it seems that's not the case? Where am I supposed to put the password and other settings for the auth database? Or am I just totally misunderstanding the architecture of these settings?
I'm not at all familiar with TypeScript, but a basic look into the code @./src/armory/Armory.ts:74
this.logger.info("Connecting to databases...");
this.worldDb = createPool(this.config.worldDatabase);
for (const realm of this.config.realms) {
this.charsDbs[realm.name.toLowerCase()] = createPool(realm.charactersDatabase);
}
This looks to only be actually connecting to the the Character and World databases. So this check isn't validating the Auth database anyway, if the server is supposed to also use the Auth database, shouldn't it be checked during this for loop?
Thank you for the assistance. Please let me know if any other logs would be useful, or if I'm missing some documentation somewhere.