diff --git a/net/freeradius/pkg-descr b/net/freeradius/pkg-descr
index 5fb383d50..9f645c32a 100644
--- a/net/freeradius/pkg-descr
+++ b/net/freeradius/pkg-descr
@@ -18,7 +18,7 @@ Plugin Changelog
1.9.0
* Add DHCP support, serving only for DHCP relays
-
+* Allow usage of remote MySQL server
WWW: https://www.freeradius.org
diff --git a/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/general.xml b/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/general.xml
index 85a119105..7f4de121b 100644
--- a/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/general.xml
+++ b/net/freeradius/src/opnsense/mvc/app/controllers/OPNsense/Freeradius/forms/general.xml
@@ -83,4 +83,46 @@
text
Set the IP address to listen on.
+
+ general.mysql
+
+ checkbox
+ true
+ This enables remote MySQL support.
+
+
+ general.mysqlserver
+
+ text
+ true
+ Set the IP address of remote MySQL server.
+
+
+ general.mysqlport
+
+ text
+ true
+ Set the port of remote MySQL server.
+
+
+ general.mysqluser
+
+ text
+ true
+ Set the user of remote MySQL server.
+
+
+ general.mysqlpassword
+
+ password
+ true
+ Set the password of remote MySQL server.
+
+
+ general.mysqldb
+
+ text
+ true
+ Set database name of remote MySQL server.
+
diff --git a/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/General.xml b/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/General.xml
index 07974c9ac..339c42e1d 100644
--- a/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/General.xml
+++ b/net/freeradius/src/opnsense/mvc/app/models/OPNsense/Freeradius/General.xml
@@ -30,6 +30,15 @@
0
N
+
+
+ MySQL and SQLite can not be combined.
+ SingleSelectConstraint
+
+ mysql
+
+
+
0
@@ -80,5 +89,38 @@
+
+ 0
+ N
+
+
+ MySQL and SQLite can not be combined.
+ SingleSelectConstraint
+
+ sqlite
+
+
+
+
+
+ 127.0.0.1
+ Y
+
+
+ 3306
+ Y
+
+
+ radius
+ Y
+
+
+ radpass
+ Y
+
+
+ radius
+ Y
+
diff --git a/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/mods-enabled-sql b/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/mods-enabled-sql
index 08d7a9452..a999e7da5 100644
--- a/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/mods-enabled-sql
+++ b/net/freeradius/src/opnsense/service/templates/OPNsense/Freeradius/mods-enabled-sql
@@ -42,5 +42,42 @@ sql {
$INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
}
+{% endif %}
+{% if helpers.exists('OPNsense.freeradius.general.mysql') and OPNsense.freeradius.general.mysql == '1' %}
+sql sql1 {
+ database = "mysql"
+ driver = "rlm_sql_${database}"
+ dialect = "${database}"
+ server = "{{ OPNsense.freeradius.general.mysqlserver }}"
+ port = {{ OPNsense.freeradius.general.mysqlport }}
+ login = "{{ OPNsense.freeradius.general.mysqluser }}"
+ password = "{{ OPNsense.freeradius.general.mysqlpassword }}"
+ radius_db = "{{ OPNsense.freeradius.general.mysqldb }}"
+ acct_table1 = "radacct"
+ acct_table2 = "radacct"
+ postauth_table = "radpostauth"
+ authcheck_table = "radcheck"
+ authreply_table = "radreply"
+ groupcheck_table = "radgroupcheck"
+ groupreply_table = "radgroupreply"
+ usergroup_table = "radusergroup"
+ read_groups = yes
+ delete_stale_sessions = yes
+ logfile = ${logdir}/sqltrace.sql
+ read_clients = yes
+ client_table = "nas"
+ pool {
+ start = ${thread[pool].start_servers}
+ min = ${thread[pool].min_spare_servers}
+ max = 5
+ spare = ${thread[pool].max_spare_servers}
+ uses = 0
+ retry_delay = 60
+ lifetime = 0
+ idle_timeout = 60
+ }
+ group_attribute = "${.:instance}-SQL-Group"
+ $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
+}
{% endif %}
{% endif %}