LuckPerms

LuckPerms

41.4k Downloads

MySQL & Bungee

cixastra opened this issue ยท 1 comments

commented

Description

My Luckperms plugin on bungee appears to be connecting to my proxy's public IP address instead of my specified MySQL server addr.

Reproduction Steps

  1. Set up a proxy
  2. install LP
  3. Specify MySQL as storage
  4. Use a different ip than your server's for the mysql addr.

Expected Behaviour

It is supposed to use the config value specified to connect to instead of public server ip.

Server Details

git:BungeeCord-Bootstrap:1.18-R0.1-SNAPSHOT:9c95d4b:1628

LuckPerms Version

v5.3.98

Logs and Configs

My config is as follows:

####################################################################################################
# +----------------------------------------------------------------------------------------------+ #
# |                                   __         __   ___  __         __                         | #
# |                        |    |  | /  ` |__/  |__) |__  |__)  |\/| /__`                        | #
# |                        |___ \__/ \__, |  \  |    |___ |  \  |  | .__/                        | #
# |                                                                                              | #
# |                                     https://luckperms.net                                    | #
# |                                                                                              | #
# |  WIKI:        https://luckperms.net/wiki                                                     | #
# |  DISCORD:     https://discord.gg/luckperms                                                   | #
# |  BUG REPORTS: https://github.com/lucko/LuckPerms/issues                                      | #
# |                                                                                              | #
# |  Each option in this file is documented and explained here:                                  | #
# |   ==>  https://luckperms.net/wiki/Configuration                                              | #
# |                                                                                              | #
# |  New options are not added to this file automatically. Default values are used if an         | #
# |  option cannot be found. The latest config versions can be obtained at the link above.       | #
# +----------------------------------------------------------------------------------------------+ #
####################################################################################################

# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                                      ESSENTIAL SETTINGS                                      | #
# |                                                                                              | #
# |                   Important settings that control how LuckPerms functions.                   | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# The name of the server, used for server specific permissions.
#
# - When set to "global" this setting is effectively ignored.
# - In all other cases, the value here is added to all players in a "server" context.
# - See: https://luckperms.net/wiki/Context
server: bungee

# If the servers own UUID cache/lookup facility should be used when there is no record for a player
# already in LuckPerms.
#
# - Since BungeeCord doesn't maintain it's own UUID cache, when this option is true, LuckPerms will
#   try to find a uuid for a username using RedisBungee, if installed.
use-server-uuid-cache: false




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                                       STORAGE SETTINGS                                       | #
# |                                                                                              | #
# |                Controls which storage method LuckPerms will use to store data.               | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# How the plugin should store data
#
# - The various options are explained in more detail on the wiki:
#   https://luckperms.net/wiki/Storage-types
#
# - Possible options:
#
#   |  Remote databases - require connection information to be configured below
#   |=> MySQL
#   |=> MariaDB (preferred over MySQL)
#   |=> PostgreSQL
#   |=> MongoDB
#
#   |  Flatfile/local database - don't require any extra configuration
#   |=> H2 (preferred over SQLite)
#   |=> SQLite
#
#   |  Readable & editable text files - don't require any extra configuration
#   |=> YAML (.yml files)
#   |=> JSON (.json files)
#   |=> HOCON (.conf files)
#   |=> TOML (.toml files)
#   |
#   | By default, user, group and track data is separated into different files. Data can be combined
#   | and all stored in the same file by switching to a combined storage variant.
#   | Just add '-combined' to the end of the storage-method, e.g. 'yaml-combined'
#
# - A H2 database is the default option.
# - If you want to edit data manually in "traditional" storage files, we suggest using YAML.
storage-method: MySQL

# The following block defines the settings for remote database storage methods.
#
# - You don't need to touch any of the settings here if you're using a local storage method!
# - The connection detail options are shared between all remote storage types.
data:

  # Define the address and port for the database.
  # - The standard DB engine port is used by default
  #   (MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017)
  # - Specify as "host:port" if differs
  address: 11.11.11.11 # Example IP For Issue (privacy)

  # The name of the database to store LuckPerms data in.
  # - This must be created already. Don't worry about this setting if you're using MongoDB.
  database: 'redacted'

  # Credentials for the database.
  username: 'redacted'
  password: 'redacted'

  # These settings apply to the MySQL connection pool.
  # - The default values will be suitable for the majority of users.
  # - Do not change these settings unless you know what you're doing!
  pool-settings:

    # Sets the maximum size of the MySQL connection pool.
    # - Basically this value will determine the maximum number of actual
    #   connections to the database backend.
    # - More information about determining the size of connection pools can be found here:
    #   https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
    maximum-pool-size: 10

    # Sets the minimum number of idle connections that the pool will try to maintain.
    # - For maximum performance and responsiveness to spike demands, it is recommended to not set
    #   this value and instead allow the pool to act as a fixed size connection pool.
    #   (set this value to the same as 'maximum-pool-size')
    minimum-idle: 10

    # This setting controls the maximum lifetime of a connection in the pool in milliseconds.
    # - The value should be at least 30 seconds less than any database or infrastructure imposed
    #   connection time limit.
    maximum-lifetime: 1800000 # 30 minutes

    # This setting controls how frequently the pool will 'ping' a connection in order to prevent it
    # from being timed out by the database or network infrastructure, measured in milliseconds.
    # - The value should be less than maximum-lifetime and greater than 30000 (30 seconds).
    # - Setting the value to zero will disable the keepalive functionality.
    keepalive-time: 0

    # This setting controls the maximum number of milliseconds that the plugin will wait for a
    # connection from the pool, before timing out.
    connection-timeout: 5000 # 5 seconds

    # This setting allows you to define extra properties for connections.
    #
    # By default, the following options are set to enable utf8 encoding. (you may need to remove
    # these if you are using PostgreSQL)
    #   useUnicode: true
    #   characterEncoding: utf8
    #
    # You can also use this section to disable SSL connections, by uncommenting the 'useSSL' and
    # 'verifyServerCertificate' options below.
    properties:
      useUnicode: true
      characterEncoding: utf8
      #useSSL: false
      #verifyServerCertificate: false

  # The prefix for all LuckPerms SQL tables.
  #
  # - This only applies for remote SQL storage types (MySQL, MariaDB, etc).
  # - Change this if you want to use different tables for different servers.
  table-prefix: 'luckperms_'

  # The prefix to use for all LuckPerms MongoDB collections.
  #
  # - This only applies for the MongoDB storage type.
  # - Change this if you want to use different collections for different servers. The default is no
  # prefix.
  mongodb-collection-prefix: ''

  # The connection string URI to use to connect to the MongoDB instance.
  #
  # - When configured, this setting will override anything defined in the address, database,
  #   username or password fields above.
  # - If you have a connection string that starts with 'mongodb://' or 'mongodb+srv://', enter it
  #   below.
  # - For more information, please see https://docs.mongodb.com/manual/reference/connection-string/
  mongodb-connection-uri: ''

# Define settings for a "split" storage setup.
#
# - This allows you to define a storage method for each type of data.
# - The connection options above still have to be correct for each type here.
split-storage:
  # Don't touch this if you don't want to use split storage!
  enabled: false
  methods:
    # These options don't need to be modified if split storage isn't enabled.
    user: h2
    group: h2
    track: h2
    uuid: h2
    log: h2




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                            UPDATE PROPAGATION & MESSAGING SERVICE                            | #
# |                                                                                              | #
# |    Controls the ways in which LuckPerms will sync data & notify other servers of changes.    | #
# |     These options are documented on greater detail on the wiki under "Instant Updates".      | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# This option controls how frequently LuckPerms will perform a sync task.
#
# - A sync task will refresh all data from the storage, and ensure that the most up-to-date data is
#   being used by the plugin.
# - This is disabled by default, as most users will not need it. However, if you're using a remote
#   storage type without a messaging service setup, you may wish to set this to something like 3.
# - Set to -1 to disable the task completely.
sync-minutes: -1

# If the file watcher should be enabled.
#
# - When using a file-based storage type, LuckPerms can monitor the data files for changes, and
#   automatically update when changes are detected.
# - If you don't want this feature to be active, set this option to false.
watch-files: true

# Define which messaging service should be used by the plugin.
#
# - If enabled and configured, LuckPerms will use the messaging service to inform other connected
#   servers of changes.
# - Use the command "/lp networksync" to manually push changes.
# - Data is NOT stored using this service. It is only used as a messaging platform.
#
# - If you decide to enable this feature, you should set "sync-minutes" to -1, as there is no need
#   for LuckPerms to poll the database for changes.
#
# - Possible options:
#   => sql           Uses the SQL database to form a queue system for communication. Will only work
#                    when 'storage-method' is set to MySQL or MariaDB. This is chosen by default if
#                    the option is set to 'auto' and SQL storage is in use. Set to 'notsql' to
#                    disable this.
#   => pluginmsg     Uses the plugin messaging channels to communicate with the proxy.
#                    LuckPerms must be installed on your proxy & all connected servers backend
#                    servers. Won't work if you have more than one BungeeCord proxy.
#   => redis         Uses Redis pub-sub to push changes. Your server connection info must be
#                    configured below.
#   => redisbungee   Uses Redis pub-sub to push changes, using the RedisBungee API. You need to have
#                    the RedisBungee plugin installed.
#   => rabbitmq      Uses RabbitMQ pub-sub to push changes. Your server connection info must be
#                    configured below.
#   => custom        Uses a messaging service provided using the LuckPerms API.
#   => auto          Attempts to automatically setup a messaging service using redis or sql.
messaging-service: pluginmsg

# If LuckPerms should automatically push updates after a change has been made with a command.
auto-push-updates: true

# If LuckPerms should push logging entries to connected servers via the messaging service.
push-log-entries: true

# If LuckPerms should broadcast received logging entries to players on this platform.
#
# - If you have LuckPerms installed on your backend servers as well as a BungeeCord proxy, you
#   should set this option to false on either your backends or your proxies, to avoid players being
#   messaged twice about log entries.
broadcast-received-log-entries: true

# Settings for Redis.
# Port 6379 is used by default; set address to "host:port" if differs
redis:
  enabled: false
  address: localhost
  username: ''
  password: ''

# Settings for RabbitMQ.
# Port 5672 is used by default; set address to "host:port" if differs
rabbitmq:
  enabled: false
  address: localhost
  vhost: '/'
  username: 'guest'
  password: 'guest'




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                                    CUSTOMIZATION SETTINGS                                    | #
# |                                                                                              | #
# |              Settings that allow admins to customize the way LuckPerms operates.             | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# If LuckPerms should ensure all players have permission data when they connect to the server.
#
# - When set to true, LuckPerms will cancel login attempts if it is unable to load permissions data
#   for a user, or if the storage provider is unavailable.
# - When set to false, LuckPerms will allow a player to connect regardless of whether their
#   permissions data could be loaded.
# - This option does not exist on other platforms, and effectively defaults to true - however,
#   the option is provided on BungeeCord, as it is less likely to be so dependant on permissions.
cancel-failed-logins: false

# Controls how temporary permissions/parents/meta should be accumulated.
#
# - The default behaviour is "deny".
# - This behaviour can also be specified when the command is executed. See the command usage
#   documentation for more info.
#
# - Possible options:
#   => accumulate   durations will be added to the existing expiry time
#   => replace      durations will be replaced if the new duration is later than the current
#                   expiration
#   => deny         the command will just fail if you try to add another node with the same expiry
temporary-add-behaviour: deny

# Controls how LuckPerms will determine a users "primary" group.
#
# - The meaning and influence of "primary groups" are explained in detail on the wiki.
# - The preferred approach is to let LuckPerms automatically determine a users primary group
#   based on the relative weight of their parent groups.
#
# - Possible options:
#   => stored                  use the value stored against the users record in the file/database
#   => parents-by-weight       just use the users most highly weighted parent
#   => all-parents-by-weight   same as above, but calculates based upon all parents inherited from
#                              both directly and indirectly
primary-group-calculation: parents-by-weight

# If the plugin should check for "extra" permissions with users run LP commands.
#
# - These extra permissions allow finer control over what users can do with each command, and who
#   they have access to edit.
# - The nature of the checks are documented on the wiki under "Argument based command permissions".
# - Argument based permissions are *not* static, unlike the 'base' permissions, and will depend upon
#   the arguments given within the command.
argument-based-command-permissions: false

# If the plugin should check whether senders are a member of a given group before they're able to
# edit the groups data or add/remove other users to/from it.
# Note: these limitations do not apply to the web editor!
require-sender-group-membership-to-modify: false

# If the plugin should send log notifications to users whenever permissions are modified.
#
# - Notifications are only sent to those with the appropriate permission to receive them
# - They can also be temporarily enabled/disabled on a per-user basis using
#   '/lp log notify <on|off>'
log-notify: true

# Defines a list of log entries which should not be sent as notifications to users.
#
# - Each entry in the list is a RegEx expression which is matched against the log entry description.
log-notify-filtered-descriptions:
#  - "parent add example"

# If LuckPerms should automatically install translation bundles and periodically update them.
auto-install-translations: true

# Defines the options for prefix and suffix stacking.
#
# - The feature allows you to display multiple prefixes or suffixes alongside a players username in
#   chat.
# - It is explained and documented in more detail on the wiki under "Prefix & Suffix Stacking".
#
# - The options are divided into separate sections for prefixes and suffixes.
# - The 'duplicates' setting refers to how duplicate elements are handled. Can be 'retain-all',
#   'first-only' or 'last-only'.
# - The value of 'start-spacer' is included at the start of the resultant prefix/suffix.
# - The value of 'end-spacer' is included at the end of the resultant prefix/suffix.
# - The value of 'middle-spacer' is included between each element in the resultant prefix/suffix.
#
# - Possible format options:
#   => highest                        Selects the value with the highest weight, from all values
#                                     held by or inherited by the player.
#
#   => lowest                         Same as above, except takes the one with the lowest weight.
#
#   => highest_own                    Selects the value with the highest weight, but will not
#                                     accept any inherited values.
#
#   => lowest_own                     Same as above, except takes the value with the lowest weight.
#
#   => highest_inherited              Selects the value with the highest weight, but will only
#                                     accept inherited values.
#
#   => lowest_inherited               Same as above, except takes the value with the lowest weight.
#
#   => highest_on_track_<track>       Selects the value with the highest weight, but only if the
#                                     value was inherited from a group on the given track.
#
#   => lowest_on_track_<track>        Same as above, except takes the value with the lowest weight.
#
#   => highest_not_on_track_<track>   Selects the value with the highest weight, but only if the
#                                     value was inherited from a group not on the given track.
#
#   => lowest_not_on_track_<track>    Same as above, except takes the value with the lowest weight.
#
#   => highest_from_group_<group>     Selects the value with the highest weight, but only if the
#                                     value was inherited from the given group.
#
#   => lowest_from_group_<group>      Same as above, except takes the value with the lowest weight.
#
#   => highest_not_from_group_<group> Selects the value with the highest weight, but only if the
#                                     value was not inherited from the given group.
#
#   => lowest_not_from_group_<group>  Same as above, except takes the value with the lowest weight.
meta-formatting:
  prefix:
    format:
      - "highest"
    duplicates: first-only
    start-spacer: ""
    middle-spacer: " "
    end-spacer: ""
  suffix:
    format:
      - "highest"
    duplicates: first-only
    start-spacer: ""
    middle-spacer: " "
    end-spacer: ""




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                            PERMISSION CALCULATION AND INHERITANCE                            | #
# |                                                                                              | #
# |    Modify the way permission checks, meta lookups and inheritance resolutions are handled.   | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# The algorithm LuckPerms should use when traversing the "inheritance tree".
#
# - Possible options:
#   => breadth-first            See: https://en.wikipedia.org/wiki/Breadth-first_search
#   => depth-first-pre-order    See: https://en.wikipedia.org/wiki/Depth-first_search
#   => depth-first-post-order   See: https://en.wikipedia.org/wiki/Depth-first_search
inheritance-traversal-algorithm: depth-first-pre-order

# If a final sort according to "inheritance rules" should be performed after the traversal algorithm
# has resolved the inheritance tree.
#
# "Inheritance rules" refers to things such as group weightings, primary group status, and the
# natural contextual ordering of the group nodes.
#
# Setting this to 'true' will allow for the inheritance rules to take priority over the structure of
# the inheritance tree.
#
# Effectively when this setting is 'true': the tree is flattened, and rules applied afterwards,
# and when this setting is 'false':, the rules are just applied during each step of the traversal.
post-traversal-inheritance-sort: false

# Defines the mode used to determine whether a set of contexts are satisfied.
#
# - Possible options:
#   => at-least-one-value-per-key   Set A will be satisfied by another set B, if at least one of the
#                                   key-value entries per key in A are also in B.
#   => all-values-per-key           Set A will be satisfied by another set B, if all key-value
#                                   entries in A are also in B.
context-satisfy-mode: at-least-one-value-per-key

# LuckPerms has a number of built-in contexts. These can be disabled by adding the context key to
# the list below.
disabled-contexts:
#  - "world"

# +----------------------------------------------------------------------------------------------+ #
# | Permission resolution settings                                                               | #
# +----------------------------------------------------------------------------------------------+ #

# If users on this server should have their global permissions applied.
# When set to false, only server specific permissions will apply for users on this server
include-global: true

# If users on this server should have their global world permissions applied.
# When set to false, only world specific permissions will apply for users on this server
include-global-world: true

# If users on this server should have global (non-server specific) groups applied
apply-global-groups: true

# If users on this server should have global (non-world specific) groups applied
apply-global-world-groups: true

# +----------------------------------------------------------------------------------------------+ #
# | Meta lookup settings                                                                         | #
# +----------------------------------------------------------------------------------------------+ #

# Defines how meta values should be selected.
#
# - Possible options:
#   => inheritance      Selects the meta value that was inherited first
#   => highest-number   Selects the highest numerical meta value
#   => lowest-number    Selects the lowest numerical meta value
meta-value-selection-default: inheritance

# Defines how meta values should be selected per key.
meta-value-selection:
#  max-homes: highest-number

# +----------------------------------------------------------------------------------------------+ #
# | Inheritance settings                                                                         | #
# +----------------------------------------------------------------------------------------------+ #

# If the plugin should apply wildcard permissions.
#
# - If set to true, LuckPerms will detect wildcard permissions, and resolve & apply all registered
#   permissions matching the wildcard.
apply-wildcards: true

# If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard
# inheritance system.
#
# - That being: If a user has been granted "example", then the player should have also be
#   automatically granted "example.function", "example.another", "example.deeper.nesting",
#   and so on.
apply-sponge-implicit-wildcards: false

# If the plugin should parse regex permissions.
#
# - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the
#   node, and resolve & apply all registered permissions matching the regex.
apply-regex: true

# If the plugin should complete and apply shorthand permissions.
#
# - If set to true, LuckPerms will detect and expand shorthand node patterns.
apply-shorthand: true

# If the plugin should apply the permissions & groups defined in the BungeeCord config.yml
#
# - If set to false, LuckPerms will ignore these values.
apply-bungee-config-permissions: false

# +----------------------------------------------------------------------------------------------+ #
# | Extra settings                                                                               | #
# +----------------------------------------------------------------------------------------------+ #

# A list of context calculators which will be skipped when calculating contexts.
#
# - You can disable context calculators by either:
#   => specifying the Java class name used by the calculator (e.g. com.example.ExampleCalculator)
#   => specifying a sub-section of the Java package used by the calculator (e.g. com.example)
disabled-context-calculators: []

# Allows you to set "aliases" for the worlds sent forward for context calculation.
#
# - These aliases are provided in addition to the real world name. Applied recursively.
# - Remove the comment characters for the default aliases to apply.
world-rewrite:
#  world_nether: world
#  world_the_end: world

# Define special group weights for this server.
#
# - Group weights can also be applied directly to group data, using the setweight command.
# - This section allows weights to be set on a per-server basis.
group-weight:
#  admin: 10




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                                      FINE TUNING OPTIONS                                     | #
# |                                                                                              | #
# |     A number of more niche settings for tweaking and changing behaviour. The section also    | #
# | contains toggles for some more specialised features. It is only necessary to make changes to | #
# |                  these options if you want to fine-tune LuckPerms behaviour.                 | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# +----------------------------------------------------------------------------------------------+ #
# | Miscellaneous (and rarely used) settings                                                     | #
# +----------------------------------------------------------------------------------------------+ #

# If LuckPerms should produce extra logging output when it handles logins.
#
# - Useful if you're having issues with UUID forwarding or data not being loaded.
debug-logins: false

# If LuckPerms should allow usernames with non alphanumeric characters.
#
# - Note that due to the design of the storage implementation, usernames must still be 16 characters
#   or less.
allow-invalid-usernames: false

# If LuckPerms should not require users to confirm bulkupdate operations.
#
# - When set to true, operations will be executed immediately.
# - This is not recommended, as bulkupdate has the potential to irreversibly delete large amounts of
#   data, and is not designed to be executed automatically.
# - If automation is needed, users should prefer using the LuckPerms API.
skip-bulkupdate-confirmation: false

# If LuckPerms should prevent bulkupdate operations.
#
# - When set to true, bulkupdate operations (the /lp bulkupdate command) will not work.
# - When set to false, bulkupdate operations will be allowed via the console.
disable-bulkupdate: false

# If LuckPerms should allow a users primary group to be removed with the 'parent remove' command.
#
# - When this happens, the plugin will set their primary group back to default.
prevent-primary-group-removal: false

My log event is as follows:

03:07:22 [SEVERE] [LuckPerms] Failed to init storage implementation
java.sql.SQLTransientConnectionException: luckperms-hikari - Connection is not available, request timed out after 5002ms.
    at me.lucko.luckperms.lib.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696)
    at me.lucko.luckperms.lib.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
    at me.lucko.luckperms.lib.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
    at me.lucko.luckperms.lib.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
    at me.lucko.luckperms.common.storage.implementation.sql.connection.hikari.HikariConnectionFactory.getConnection(HikariConnectionFactory.java:174)
    at me.lucko.luckperms.common.storage.implementation.sql.SqlStorage.init(SqlStorage.java:165)
    at me.lucko.luckperms.common.storage.Storage.init(Storage.java:117)
    at me.lucko.luckperms.common.storage.StorageFactory.getInstance(StorageFactory.java:88)
    at me.lucko.luckperms.common.plugin.AbstractLuckPermsPlugin.enable(AbstractLuckPermsPlugin.java:166)
    at me.lucko.luckperms.bungee.LPBungeeBootstrap.onEnable(LPBungeeBootstrap.java:168)
    at me.lucko.luckperms.bungee.loader.BungeeLoaderPlugin.onEnable(BungeeLoaderPlugin.java:51)
    at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:265)
    at net.md_5.bungee.BungeeCord.start(BungeeCord.java:285)
    at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:67)
    at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)
Caused by: java.sql.SQLException: Access denied for user 'redacted'@'22.22.22.22' (using password: YES)
    at me.lucko.luckperms.lib.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
    at me.lucko.luckperms.lib.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at me.lucko.luckperms.lib.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:833)
    at me.lucko.luckperms.lib.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453)
    at me.lucko.luckperms.lib.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
    at me.lucko.luckperms.lib.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
    at me.lucko.luckperms.lib.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
    at me.lucko.luckperms.lib.hikari.pool.PoolBase.newConnection(PoolBase.java:364)
    at me.lucko.luckperms.lib.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at me.lucko.luckperms.lib.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
    at me.lucko.luckperms.lib.hikari.pool.HikariPool.access$100(HikariPool.java:71)
    at me.lucko.luckperms.lib.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:726)
    at me.lucko.luckperms.lib.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:712)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
03:07:22 [INFO] [LuckPerms] Loading messaging service... [PLUGINMSG]
03:07:22 [INFO] [LuckPerms] Loading internal permission managers...
03:07:22 [INFO] [LuckPerms] Performing initial data load...
03:07:27 [SEVERE] java.util.concurrent.CompletionException: java.sql.SQLTransientConnectionException: luckperms-hikari - Connection is not available, request timed out after 5000ms.

03:07:27 [INFO] [LuckPerms] Successfully enabled. (took 11201ms)
03:07:27 [SEVERE]     at me.lucko.luckperms.common.storage.Storage.lambda$future$1(Storage.java:106)

03:07:27 [SEVERE]     at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)

03:07:27 [SEVERE]     at net.md_5.bungee.scheduler.BungeeTask.run(BungeeTask.java:63)

03:07:27 [SEVERE]     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)

03:07:27 [SEVERE]     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)

03:07:27 [SEVERE]     at java.base/java.lang.Thread.run(Thread.java:833)

03:07:27 [SEVERE] Caused by: java.sql.SQLTransientConnectionException: luckperms-hikari - Connection is not available, request timed out after 5000ms.

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.pool.HikariPool.getConnection(HikariPool.java:197)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.pool.HikariPool.getConnection(HikariPool.java:162)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)

03:07:27 [SEVERE]     at me.lucko.luckperms.common.storage.implementation.sql.connection.hikari.HikariConnectionFactory.getConnection(HikariConnectionFactory.java:174)

03:07:27 [SEVERE]     at me.lucko.luckperms.common.storage.implementation.sql.SqlStorage.loadAllGroups(SqlStorage.java:467)

03:07:27 [SEVERE]     at me.lucko.luckperms.common.storage.Storage.lambda$loadAllGroups$10(Storage.java:195)

03:07:27 [SEVERE]     at me.lucko.luckperms.common.storage.Storage.lambda$future$1(Storage.java:101)

03:07:27 [SEVERE]     ... 5 more

03:07:27 [SEVERE] Caused by: java.sql.SQLException: Access denied for user 'u814574_eK3sU0MMSF'@'51.79.162.66' (using password: YES)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:833)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.pool.PoolBase.newConnection(PoolBase.java:364)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.pool.HikariPool.access$100(HikariPool.java:71)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:726)

03:07:27 [SEVERE]     at me.lucko.luckperms.lib.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:712)

03:07:27 [SEVERE]     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

03:07:27 [SEVERE]     ... 3 more

03:07:27 [INFO] Enabled plugin LuckPerms version 5.3.98 by Luck

11.11.11.11 is my desired SQL address
22.22.22.22 is my server's public IP address

Extra Details

No response

commented

Update:
This config worked:

####################################################################################################
# +----------------------------------------------------------------------------------------------+ #
# |                                   __         __   ___  __         __                         | #
# |                        |    |  | /  ` |__/  |__) |__  |__)  |\/| /__`                        | #
# |                        |___ \__/ \__, |  \  |    |___ |  \  |  | .__/                        | #
# |                                                                                              | #
# |                                     https://luckperms.net                                    | #
# |                                                                                              | #
# |  WIKI:        https://luckperms.net/wiki                                                     | #
# |  DISCORD:     https://discord.gg/luckperms                                                   | #
# |  BUG REPORTS: https://github.com/lucko/LuckPerms/issues                                      | #
# |                                                                                              | #
# |  Each option in this file is documented and explained here:                                  | #
# |   ==>  https://luckperms.net/wiki/Configuration                                              | #
# |                                                                                              | #
# |  New options are not added to this file automatically. Default values are used if an         | #
# |  option cannot be found. The latest config versions can be obtained at the link above.       | #
# +----------------------------------------------------------------------------------------------+ #
####################################################################################################

# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                                      ESSENTIAL SETTINGS                                      | #
# |                                                                                              | #
# |                   Important settings that control how LuckPerms functions.                   | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# The name of the server, used for server specific permissions.
#
# - When set to "global" this setting is effectively ignored.
# - In all other cases, the value here is added to all players in a "server" context.
# - See: https://luckperms.net/wiki/Context
server: global

# If the servers own UUID cache/lookup facility should be used when there is no record for a player
# already in LuckPerms.
#
# - When this is set to 'false', commands using a player's username will not work unless the player
#   has joined since LuckPerms was first installed.
# - To get around this, you can use a player's uuid directly in the command, or enable this option.
# - When this is set to 'true', the server facility is used. This may use a number of methods,
#   including checking the servers local cache, or making a request to the Mojang API.
use-server-uuid-cache: false




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                                       STORAGE SETTINGS                                       | #
# |                                                                                              | #
# |                Controls which storage method LuckPerms will use to store data.               | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# How the plugin should store data
#
# - The various options are explained in more detail on the wiki:
#   https://luckperms.net/wiki/Storage-types
#
# - Possible options:
#
#   |  Remote databases - require connection information to be configured below
#   |=> MySQL
#   |=> MariaDB (preferred over MySQL)
#   |=> PostgreSQL
#   |=> MongoDB
#
#   |  Flatfile/local database - don't require any extra configuration
#   |=> H2 (preferred over SQLite)
#   |=> SQLite
#
#   |  Readable & editable text files - don't require any extra configuration
#   |=> YAML (.yml files)
#   |=> JSON (.json files)
#   |=> HOCON (.conf files)
#   |=> TOML (.toml files)
#   |
#   | By default, user, group and track data is separated into different files. Data can be combined
#   | and all stored in the same file by switching to a combined storage variant.
#   | Just add '-combined' to the end of the storage-method, e.g. 'yaml-combined'
#
# - A H2 database is the default option.
# - If you want to edit data manually in "traditional" storage files, we suggest using YAML.
storage-method: mysql

# The following block defines the settings for remote database storage methods.
#
# - You don't need to touch any of the settings here if you're using a local storage method!
# - The connection detail options are shared between all remote storage types.
data:

  # Define the address and port for the database.
  # - The standard DB engine port is used by default
  #   (MySQL: 3306, PostgreSQL: 5432, MongoDB: 27017)
  # - Specify as "host:port" if differs
  address: redacted

  # The name of the database to store LuckPerms data in.
  # - This must be created already. Don't worry about this setting if you're using MongoDB.
  database: redacted

  # Credentials for the database.
  username: redacted
  password: 'redacted'

  # These settings apply to the MySQL connection pool.
  # - The default values will be suitable for the majority of users.
  # - Do not change these settings unless you know what you're doing!
  pool-settings:

    # Sets the maximum size of the MySQL connection pool.
    # - Basically this value will determine the maximum number of actual
    #   connections to the database backend.
    # - More information about determining the size of connection pools can be found here:
    #   https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
    maximum-pool-size: 10

    # Sets the minimum number of idle connections that the pool will try to maintain.
    # - For maximum performance and responsiveness to spike demands, it is recommended to not set
    #   this value and instead allow the pool to act as a fixed size connection pool.
    #   (set this value to the same as 'maximum-pool-size')
    minimum-idle: 10

    # This setting controls the maximum lifetime of a connection in the pool in milliseconds.
    # - The value should be at least 30 seconds less than any database or infrastructure imposed
    #   connection time limit.
    maximum-lifetime: 1800000 # 30 minutes

    # This setting controls how frequently the pool will 'ping' a connection in order to prevent it
    # from being timed out by the database or network infrastructure, measured in milliseconds.
    # - The value should be less than maximum-lifetime and greater than 30000 (30 seconds).
    # - Setting the value to zero will disable the keepalive functionality.
    keepalive-time: 0

    # This setting controls the maximum number of milliseconds that the plugin will wait for a
    # connection from the pool, before timing out.
    connection-timeout: 5000 # 5 seconds

    # This setting allows you to define extra properties for connections.
    #
    # By default, the following options are set to enable utf8 encoding. (you may need to remove
    # these if you are using PostgreSQL)
    #   useUnicode: true
    #   characterEncoding: utf8
    #
    # You can also use this section to disable SSL connections, by uncommenting the 'useSSL' and
    # 'verifyServerCertificate' options below.
    properties:
      useUnicode: true
      characterEncoding: utf8
      #useSSL: false
      #verifyServerCertificate: false

  # The prefix for all LuckPerms SQL tables.
  #
  # - This only applies for remote SQL storage types (MySQL, MariaDB, etc).
  # - Change this if you want to use different tables for different servers.
  table-prefix: 'luckperms_'

  # The prefix to use for all LuckPerms MongoDB collections.
  #
  # - This only applies for the MongoDB storage type.
  # - Change this if you want to use different collections for different servers. The default is no
  # prefix.
  mongodb-collection-prefix: ''

  # The connection string URI to use to connect to the MongoDB instance.
  #
  # - When configured, this setting will override anything defined in the address, database,
  #   username or password fields above.
  # - If you have a connection string that starts with 'mongodb://' or 'mongodb+srv://', enter it
  #   below.
  # - For more information, please see https://docs.mongodb.com/manual/reference/connection-string/
  mongodb-connection-uri: ''

# Define settings for a "split" storage setup.
#
# - This allows you to define a storage method for each type of data.
# - The connection options above still have to be correct for each type here.
split-storage:
  # Don't touch this if you don't want to use split storage!
  enabled: false
  methods:
    # These options don't need to be modified if split storage isn't enabled.
    user: h2
    group: h2
    track: h2
    uuid: h2
    log: h2




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                            UPDATE PROPAGATION & MESSAGING SERVICE                            | #
# |                                                                                              | #
# |    Controls the ways in which LuckPerms will sync data & notify other servers of changes.    | #
# |     These options are documented on greater detail on the wiki under "Instant Updates".      | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# This option controls how frequently LuckPerms will perform a sync task.
#
# - A sync task will refresh all data from the storage, and ensure that the most up-to-date data is
#   being used by the plugin.
# - This is disabled by default, as most users will not need it. However, if you're using a remote
#   storage type without a messaging service setup, you may wish to set this to something like 3.
# - Set to -1 to disable the task completely.
sync-minutes: 3

# If the file watcher should be enabled.
#
# - When using a file-based storage type, LuckPerms can monitor the data files for changes, and
#   automatically update when changes are detected.
# - If you don't want this feature to be active, set this option to false.
watch-files: true

# Define which messaging service should be used by the plugin.
#
# - If enabled and configured, LuckPerms will use the messaging service to inform other connected
#   servers of changes.
# - Use the command "/lp networksync" to manually push changes.
# - Data is NOT stored using this service. It is only used as a messaging platform.
#
# - If you decide to enable this feature, you should set "sync-minutes" to -1, as there is no need
#   for LuckPerms to poll the database for changes.
#
# - Possible options:
#   => sql       Uses the SQL database to form a queue system for communication. Will only work when
#                'storage-method' is set to MySQL or MariaDB. This is chosen by default if the
#                option is set to 'auto' and SQL storage is in use. Set to 'notsql' to disable this.
#   => pluginmsg Uses the plugin messaging channels to communicate with the proxy.
#                LuckPerms must be installed on your proxy & all connected servers backend servers.
#                Won't work if you have more than one proxy.
#   => lilypad   Uses LilyPad pub-sub to push changes. You need to have the LilyPad-Connect plugin
#                installed.
#   => redis     Uses Redis pub-sub to push changes. Your server connection info must be configured
#                below.
#   => rabbitmq  Uses RabbitMQ pub-sub to push changes. Your server connection info must be
#                configured below.
#   => auto      Attempts to automatically setup a messaging service using redis or sql.
messaging-service: auto

# If LuckPerms should automatically push updates after a change has been made with a command.
auto-push-updates: true

# If LuckPerms should push logging entries to connected servers via the messaging service.
push-log-entries: true

# If LuckPerms should broadcast received logging entries to players on this platform.
#
# - If you have LuckPerms installed on your backend servers as well as a BungeeCord proxy, you
#   should set this option to false on either your backends or your proxies, to avoid players being
#   messaged twice about log entries.
broadcast-received-log-entries: true

# Settings for Redis.
# Port 6379 is used by default; set address to "host:port" if differs
redis:
  enabled: false
  address: localhost
  username: ''
  password: ''

# Settings for RabbitMQ.
# Port 5672 is used by default; set address to "host:port" if differs
rabbitmq:
  enabled: false
  address: localhost
  vhost: '/'
  username: 'guest'
  password: 'guest'




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                                    CUSTOMIZATION SETTINGS                                    | #
# |                                                                                              | #
# |              Settings that allow admins to customize the way LuckPerms operates.             | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# Controls how temporary permissions/parents/meta should be accumulated.
#
# - The default behaviour is "deny".
# - This behaviour can also be specified when the command is executed. See the command usage
#   documentation for more info.
#
# - Possible options:
#   => accumulate   durations will be added to the existing expiry time
#   => replace      durations will be replaced if the new duration is later than the current
#                   expiration
#   => deny         the command will just fail if you try to add another node with the same expiry
temporary-add-behaviour: deny

# Controls how LuckPerms will determine a users "primary" group.
#
# - The meaning and influence of "primary groups" are explained in detail on the wiki.
# - The preferred approach is to let LuckPerms automatically determine a users primary group
#   based on the relative weight of their parent groups.
#
# - Possible options:
#   => stored                  use the value stored against the users record in the file/database
#   => parents-by-weight       just use the users most highly weighted parent
#   => all-parents-by-weight   same as above, but calculates based upon all parents inherited from
#                              both directly and indirectly
primary-group-calculation: parents-by-weight

# If the plugin should check for "extra" permissions with users run LP commands.
#
# - These extra permissions allow finer control over what users can do with each command, and who
#   they have access to edit.
# - The nature of the checks are documented on the wiki under "Argument based command permissions".
# - Argument based permissions are *not* static, unlike the 'base' permissions, and will depend upon
#   the arguments given within the command.
argument-based-command-permissions: false

# If the plugin should check whether senders are a member of a given group before they're able to
# edit the groups data or add/remove other users to/from it.
# Note: these limitations do not apply to the web editor!
require-sender-group-membership-to-modify: false

# If the plugin should send log notifications to users whenever permissions are modified.
#
# - Notifications are only sent to those with the appropriate permission to receive them
# - They can also be temporarily enabled/disabled on a per-user basis using
#   '/lp log notify <on|off>'
log-notify: true

# Defines a list of log entries which should not be sent as notifications to users.
#
# - Each entry in the list is a RegEx expression which is matched against the log entry description.
log-notify-filtered-descriptions:
#  - "parent add example"

# If LuckPerms should automatically install translation bundles and periodically update them.
auto-install-translations: true

# Defines the options for prefix and suffix stacking.
#
# - The feature allows you to display multiple prefixes or suffixes alongside a players username in
#   chat.
# - It is explained and documented in more detail on the wiki under "Prefix & Suffix Stacking".
#
# - The options are divided into separate sections for prefixes and suffixes.
# - The 'duplicates' setting refers to how duplicate elements are handled. Can be 'retain-all',
#   'first-only' or 'last-only'.
# - The value of 'start-spacer' is included at the start of the resultant prefix/suffix.
# - The value of 'end-spacer' is included at the end of the resultant prefix/suffix.
# - The value of 'middle-spacer' is included between each element in the resultant prefix/suffix.
#
# - Possible format options:
#   => highest                        Selects the value with the highest weight, from all values
#                                     held by or inherited by the player.
#
#   => lowest                         Same as above, except takes the one with the lowest weight.
#
#   => highest_own                    Selects the value with the highest weight, but will not
#                                     accept any inherited values.
#
#   => lowest_own                     Same as above, except takes the value with the lowest weight.
#
#   => highest_inherited              Selects the value with the highest weight, but will only
#                                     accept inherited values.
#
#   => lowest_inherited               Same as above, except takes the value with the lowest weight.
#
#   => highest_on_track_<track>       Selects the value with the highest weight, but only if the
#                                     value was inherited from a group on the given track.
#
#   => lowest_on_track_<track>        Same as above, except takes the value with the lowest weight.
#
#   => highest_not_on_track_<track>   Selects the value with the highest weight, but only if the
#                                     value was inherited from a group not on the given track.
#
#   => lowest_not_on_track_<track>    Same as above, except takes the value with the lowest weight.
#
#   => highest_from_group_<group>     Selects the value with the highest weight, but only if the
#                                     value was inherited from the given group.
#
#   => lowest_from_group_<group>      Same as above, except takes the value with the lowest weight.
#
#   => highest_not_from_group_<group> Selects the value with the highest weight, but only if the
#                                     value was not inherited from the given group.
#
#   => lowest_not_from_group_<group>  Same as above, except takes the value with the lowest weight.
meta-formatting:
  prefix:
    format:
      - "highest"
    duplicates: first-only
    start-spacer: ""
    middle-spacer: " "
    end-spacer: ""
  suffix:
    format:
      - "highest"
    duplicates: first-only
    start-spacer: ""
    middle-spacer: " "
    end-spacer: ""




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                            PERMISSION CALCULATION AND INHERITANCE                            | #
# |                                                                                              | #
# |    Modify the way permission checks, meta lookups and inheritance resolutions are handled.   | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# The algorithm LuckPerms should use when traversing the "inheritance tree".
#
# - Possible options:
#   => breadth-first            See: https://en.wikipedia.org/wiki/Breadth-first_search
#   => depth-first-pre-order    See: https://en.wikipedia.org/wiki/Depth-first_search
#   => depth-first-post-order   See: https://en.wikipedia.org/wiki/Depth-first_search
inheritance-traversal-algorithm: depth-first-pre-order

# If a final sort according to "inheritance rules" should be performed after the traversal algorithm
# has resolved the inheritance tree.
#
# "Inheritance rules" refers to things such as group weightings, primary group status, and the
# natural contextual ordering of the group nodes.
#
# Setting this to 'true' will allow for the inheritance rules to take priority over the structure of
# the inheritance tree.
#
# Effectively when this setting is 'true': the tree is flattened, and rules applied afterwards,
# and when this setting is 'false':, the rules are just applied during each step of the traversal.
post-traversal-inheritance-sort: false

# Defines the mode used to determine whether a set of contexts are satisfied.
#
# - Possible options:
#   => at-least-one-value-per-key   Set A will be satisfied by another set B, if at least one of the
#                                   key-value entries per key in A are also in B.
#   => all-values-per-key           Set A will be satisfied by another set B, if all key-value
#                                   entries in A are also in B.
context-satisfy-mode: at-least-one-value-per-key

# LuckPerms has a number of built-in contexts. These can be disabled by adding the context key to
# the list below.
disabled-contexts:
#  - "world"

# +----------------------------------------------------------------------------------------------+ #
# | Permission resolution settings                                                               | #
# +----------------------------------------------------------------------------------------------+ #

# If users on this server should have their global permissions applied.
# When set to false, only server specific permissions will apply for users on this server
include-global: true

# If users on this server should have their global world permissions applied.
# When set to false, only world specific permissions will apply for users on this server
include-global-world: true

# If users on this server should have global (non-server specific) groups applied
apply-global-groups: true

# If users on this server should have global (non-world specific) groups applied
apply-global-world-groups: true

# +----------------------------------------------------------------------------------------------+ #
# | Meta lookup settings                                                                         | #
# +----------------------------------------------------------------------------------------------+ #

# Defines how meta values should be selected.
#
# - Possible options:
#   => inheritance      Selects the meta value that was inherited first
#   => highest-number   Selects the highest numerical meta value
#   => lowest-number    Selects the lowest numerical meta value
meta-value-selection-default: inheritance

# Defines how meta values should be selected per key.
meta-value-selection:
#  max-homes: highest-number

# +----------------------------------------------------------------------------------------------+ #
# | Inheritance settings                                                                         | #
# +----------------------------------------------------------------------------------------------+ #

# If the plugin should apply wildcard permissions.
#
# - If set to true, LuckPerms will detect wildcard permissions, and resolve & apply all registered
#   permissions matching the wildcard.
apply-wildcards: true

# If LuckPerms should resolve and apply permissions according to the Sponge style implicit wildcard
# inheritance system.
#
# - That being: If a user has been granted "example", then the player should have also be
#   automatically granted "example.function", "example.another", "example.deeper.nesting",
#   and so on.
apply-sponge-implicit-wildcards: false

# If the plugin should apply negated Bukkit default permissions before it considers wildcard
# assignments.
#
# - Plugin authors can define permissions which explicitly should not be given automatically to OPs.
#   This is usually used for so called "anti-permissions" - permissions which, when granted, apply
#   something negative.
# - If this option is set to true, LuckPerms will consider any negated declarations made by
#   plugins before it considers wildcards. (similar to the way the OP system works)
# - If this option is set to false, LuckPerms will consider any wildcard assignments first.
apply-default-negated-permissions-before-wildcards: false

# If the plugin should parse regex permissions.
#
# - If set to true, LuckPerms will detect regex permissions, marked with "r=" at the start of the
#   node, and resolve & apply all registered permissions matching the regex.
apply-regex: true

# If the plugin should complete and apply shorthand permissions.
#
# - If set to true, LuckPerms will detect and expand shorthand node patterns.
apply-shorthand: true

# If the plugin should apply Bukkit child permissions.
#
# - Plugin authors can define custom permissions structures for their plugin, which will be resolved
#   and used by LuckPerms if this setting is enabled.
apply-bukkit-child-permissions: true

# If the plugin should apply Bukkit default permissions.
#
# - Plugin authors can define permissions which should be given to all users by default, or setup
#   permissions which should/shouldn't be given to opped players.
# - If this option is set to false, LuckPerms will ignore these defaults.
apply-bukkit-default-permissions: true

# If the plugin should apply attachment permissions.
#
# - Other plugins on the server are able to add their own "permission attachments" to players.
# - This allows them to grant players additional permissions which last until the end of the
#   session, or until they're removed.
# - If this option is set to false, LuckPerms will not include these attachment permissions when
#   considering if a player should have access to a certain permission.
apply-bukkit-attachment-permissions: true

# +----------------------------------------------------------------------------------------------+ #
# | Extra settings                                                                               | #
# +----------------------------------------------------------------------------------------------+ #

# A list of context calculators which will be skipped when calculating contexts.
#
# - You can disable context calculators by either:
#   => specifying the Java class name used by the calculator (e.g. com.example.ExampleCalculator)
#   => specifying a sub-section of the Java package used by the calculator (e.g. com.example)
disabled-context-calculators: []

# Allows you to set "aliases" for the worlds sent forward for context calculation.
#
# - These aliases are provided in addition to the real world name. Applied recursively.
# - Remove the comment characters for the default aliases to apply.
world-rewrite:
#  world_nether: world
#  world_the_end: world

# Define special group weights for this server.
#
# - Group weights can also be applied directly to group data, using the setweight command.
# - This section allows weights to be set on a per-server basis.
group-weight:
#  admin: 10




# +----------------------------------------------------------------------------------------------+ #
# |                                                                                              | #
# |                                      FINE TUNING OPTIONS                                     | #
# |                                                                                              | #
# |     A number of more niche settings for tweaking and changing behaviour. The section also    | #
# | contains toggles for some more specialised features. It is only necessary to make changes to | #
# |                  these options if you want to fine-tune LuckPerms behaviour.                 | #
# |                                                                                              | #
# +----------------------------------------------------------------------------------------------+ #

# +----------------------------------------------------------------------------------------------+ #
# | Server Operator (OP) settings                                                                | #
# +----------------------------------------------------------------------------------------------+ #

# Controls whether server operators should exist at all.
#
# - When set to 'false', all players will be de-opped, and the /op and /deop commands will be
#   disabled. Note that vanilla features like the spawn-protection require an operator on the
#   server to work.
enable-ops: false

# Enables or disables a special permission based system in LuckPerms for controlling OP status.
#
# - If set to true, any user with the permission "luckperms.autoop" will automatically be granted
#   server operator status. This permission can be inherited, or set on specific servers/worlds,
#   temporarily, etc.
# - Additionally, setting this to true will force the "enable-ops" option above to false. All users
#   will be de-opped unless they have the permission node, and the op/deop commands will be
#   disabled.
# - It is recommended that you use this option instead of assigning a single '*' permission.
auto-op: true

# Defines if "opped" players should be able to use all LuckPerms commands by default.
#
# - Set to false to only allow users who have the permissions access to the commands
commands-allow-op: true

# +----------------------------------------------------------------------------------------------+ #
# | Vault integration settings                                                                   | #
# +----------------------------------------------------------------------------------------------+ #

# If Vault lookups for offline players on the main server thread should be enabled.
#
# LuckPerms has a "catch" for plugins attempting to perform unsafe offline player data lookups
# from the main server thread. This catch raises an exception (causes an error to occur) when unsafe
# lookups are made, instead of allowing the lookup to happen, which would likely cause the server
# to lag.
#
# However, if you're willing to accept the consequences, the catch can be disabled by setting this
# option to 'true.
vault-unsafe-lookups: false

# If LuckPerms should use the 'display name' of a group when returning groups in Vault API calls.
#
# - When this option is set to true, the display name of the group is returned.
# - When this option is set to false, the standard name/id of the group is returned.
vault-group-use-displaynames: true

# Controls which group LuckPerms should use for NPC players when handling Vault requests.
#
# - As NPCs aren't actually real players, LuckPerms does not load any user data for them. This
#   becomes an issue when plugins want to check for their permissions using Vault.
# - As a solution, Vault checks for NPCs fallback to a group, which is defined below.
vault-npc-group: default

# Controls how LuckPerms should consider the OP status of NPC players when handing Vault requests.
#
# - If you want NPCs to have the same permissions as "normal" players, set this option to false.
# - If you want NPCs to have OP status, set this option to true.
vault-npc-op-status: false

# If the vault-server option below should be used.
#
# - When this option is set to false, the server value defined above under "server" is used.
use-vault-server: false

# The name of the server used within Vault operations.
#
# - If you don't want Vault operations to be server specific, set this to "global".
# - Will only take effect if use-vault-server is set to true above.
vault-server: global

# If global permissions should be considered when retrieving meta or player groups
vault-include-global: true

# If Vault operations should ignore any world arguments if supplied.
vault-ignore-world: false

# +----------------------------------------------------------------------------------------------+ #
# | Miscellaneous (and rarely used) settings                                                     | #
# +----------------------------------------------------------------------------------------------+ #

# If LuckPerms should produce extra logging output when it handles logins.
#
# - Useful if you're having issues with UUID forwarding or data not being loaded.
debug-logins: false

# If LuckPerms should allow usernames with non alphanumeric characters.
#
# - Note that due to the design of the storage implementation, usernames must still be 16 characters
#   or less.
allow-invalid-usernames: false

# If LuckPerms should not require users to confirm bulkupdate operations.
#
# - When set to true, operations will be executed immediately.
# - This is not recommended, as bulkupdate has the potential to irreversibly delete large amounts of
#   data, and is not designed to be executed automatically.
# - If automation is needed, users should prefer using the LuckPerms API.
skip-bulkupdate-confirmation: false

# If LuckPerms should allow a users primary group to be removed with the 'parent remove' command.
#
# - When this happens, the plugin will set their primary group back to default.
prevent-primary-group-removal: false

# If LuckPerms should update the list of commands sent to the client when permissions are changed.
update-client-command-list: true

# If LuckPerms should attempt to register "Brigadier" command list data for its commands.
register-command-list-data: true

# If LuckPerms should attempt to resolve Vanilla command target selectors for LP commands.
# See here for more info: https://minecraft.gamepedia.com/Commands#Target_selectors
resolve-command-selectors: false

With this, I'll close the issue, but I would still like to know what went wrong lol. (I copied this config from my other servers).