Ok, this is a bug.
MySQL 8.0 has added some new reserved words/keywords. One of them is admin and on line 1304 of the file 2000010-200a.php we run this query:
[code=sq]
SELECT admin.user_id, admin.permission_cache, admin.is_super_admin
FROM xf_admin AS admin
INNER JOIN xf_user AS user ON
(admin.user_id = user.user_id)
WHERE user.is_moderator = 1[/code]
As a quick fix to get you going, for now, this should either be changed to the following, or run the upgrade using a lower MySQL version:
[code=sql]
SELECT ad.user_id, ad.permission_cache, ad.is_super_admin
FROM xf_admin AS ad
INNER JOIN xf_user AS user ON
(ad.user_id = user.user_id)
WHERE user.is_moderator = 1[/code]
It looks like this is the only occurrence of an incompatibility with MySQL 8.0 but please do let us know if you come across anything else.