Ok I've finally got mine working. FYI For any who wish to set this up, you must make the change not only in the openfire.xml file but in the ofproperty table in the openfire database. The database is often not entirely updated by the openfire.xml settings.
I'm including my config file with the database and password info removed. I'll also include my ofproperty table as an SQL statement.
Openfire.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file stores bootstrap properties needed by Openfire.
Property names must be in the format: "prop.name.is.blah=value"
That will be stored as:
<prop>
<name>
<is>
<blah>value</blah>
</is>
</name>
</prop>
Most properties are stored in the Openfire database. A
property viewer and editor is included in the admin console.
-->
<!-- root element, all properties must be under this element -->
<jive>
<adminConsole>
<!-- Disable either port by setting the value to -1 -->
<port>9090</port>
<securePort>9091</securePort>
</adminConsole>
<locale>en</locale>
<!-- Network settings. By default, Openfire will bind to all network interfaces.
Alternatively, you can specify a specific network interfaces that the server
will listen on. For example, 127.0.0.1. This setting is generally only useful
on multi-homed servers. -->
<!--
<network>
<interface></interface>
</network>
-->
<connectionProvider>
<className>org.jivesoftware.database.DefaultConnectionProvider</className>
</connectionProvider>
<database>
<defaultProvider>
<driver>com.mysql.jdbc.Driver</driver>
<serverURL>jdbc:mysql://localhost:3306/databasename</serverURL>
<username>databaseuser</username>
<password>*******</password>
<testSQL>select 1</testSQL>
<testBeforeUse>true</testBeforeUse>
<testAfterUse>true</testAfterUse>
<minConnections>5</minConnections>
<maxConnections>25</maxConnections>
<connectionTimeout>1.0</connectionTimeout>
</defaultProvider>
</database>
<provider>
<auth>
<className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
</auth>
<user>
<className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
</user>
</provider>
<jdbcProvider>
<driver>com.mysql.jdbc.Driver</driver>
<connectionString>jdbc:mysql://localhost/databasename?user=databasename&password=*******</connectionString>
</jdbcProvider>
<jdbcAuthProvider>
<passwordSQL>SELECT password FROM jos_users WHERE username=?</passwordSQL>
<passwordType>md5</passwordType>
</jdbcAuthProvider>
<jdbcUserProvider>
<loadUserSQL>SELECT name,email FROM jos_users WHERE username=?</loadUserSQL>
<userCountSQL>SELECT COUNT(*) FROM jos_users</userCountSQL>
<allUsersSQL>SELECT username FROM jos_users</allUsersSQL>
<searchSQL>SELECT username FROM jos_users WHERE</searchSQL>
<usernameField>username</usernameField>
<nameField>name</nameField>
<emailField>email</emailField>
</jdbcUserProvider>
<admin>
<authorizedUsernames>username, username, username</authorizedUsernames>
</admin>
<setup>true</setup>
</jive>
Important note: the admin section accepts a comma deliniated list of users that will be allowed to access the openfire backend. Make sure to put at least your main administrative user into this list so that you can access the backend. No admin list means you will not be able to login to the openfire backend AT ALL. The default admin info will not work with this configuration.
ofProperty.sql:
--
-- Table structure for table `ofProperty`
--
CREATE TABLE IF NOT EXISTS `ofProperty` (
`name` varchar(100) NOT NULL,
`propValue` text NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Dumping data for table `ofProperty`
--
INSERT INTO `ofProperty` (`name`, `propValue`) VALUES
('provider.user.className', 'org.jivesoftware.openfire.user.JDBCUserProvider'),
('jdbcUserProvider.loadUserSQL', 'SELECT name,email FROM jos_users WHERE username=?'),
('jdbcUserProvider.userCountSQL', 'SELECT COUNT(*) FROM jos_users'),
('jdbcUserProvider.allUsersSQL', 'SELECT username FROM jos_users'),
('jdbcUserProvider.searchSQL', 'SELECT username FROM jos_users WHERE'),
('jdbcUserProvider.usernameField', 'username'),
('jdbcUserProvider.nameField', 'name'),
('jdbcUserProvider.emailField', 'email'),
('xmpp.socket.ssl.active', 'true'),
('xmpp.domain', 'yourserver.com'),
('provider.admin.className', 'org.jivesoftware.openfire.admin.DefaultAdminProvider'),
('provider.lockout.className', 'org.jivesoftware.openfire.lockout.DefaultLockOutProvider'),
('provider.auth.className', 'org.jivesoftware.openfire.auth.JDBCAuthProvider'),
('xmpp.auth.anonymous', 'false'),
('provider.group.className', 'org.jivesoftware.openfire.group.DefaultGroupProvider'),
('provider.vcard.className', 'org.jivesoftware.openfire.vcard.DefaultVCardProvider'),
('provider.securityAudit.className', 'org.jivesoftware.openfire.security.DefaultSecurityAuditProvider'),
('admin.authorizedJIDs', 'username @yourserver.com,username @yourserver.com'),
('xmpp.session.conflict-limit', '0'),
('cache.GatewaySessionLocationCache.type', 'optimistic'),
('cache.GatewaySessionLocationCache.size', '-1'),
('cache.GatewaySessionLocationCache.maxLifetime', '-1'),
('cache.GatewaySessionLocationCache.min', '-1'),
('cache.GatewayRegistrationCache.type', 'optimistic'),
('cache.GatewayRegistrationCache.size', '-1'),
('cache.GatewayRegistrationCache.maxLifetime', '-1'),
('cache.GatewayRegistrationCache.min', '-1'),
('update.lastCheck', '1234626503582'),
('jdbcAuthProvider.passwordSQL', 'SELECT password FROM jos_openfire_users WHERE username=?'),
('jdbcAuthProvider.passwordType', 'sha1'),
('jdbcProvider.driver', 'com.mysql.jdbc.Driver'),
('jdbcProvider.connectionString', 'jdbc:mysql://localhost/databasename?user=databaseuser&password=databasepassword'),
('plugin.gateway.aim.enabled', 'true'),
('plugin.gateway.gadugadu.enabled', 'false'),
('plugin.gateway.icq.enabled', 'false'),
('plugin.gateway.irc.enabled', 'true'),
('plugin.gateway.msn.enabled', 'true'),
('plugin.gateway.yahoo.enabled', 'true'),
('plugin.gateway.gtalk.enabled', 'true'),
('mediaproxy.idleTimeout', '60000'),
('mediaproxy.lifetime', '9000'),
('mediaproxy.enabled', 'true'),
('mediaproxy.portMin', '10000'),
('mediaproxy.portMax', '20000'),
('mediaproxy.echoPort', '10020'),
('register.inband', 'false'),
('register.password', 'false'),
('passwordKey', 'CHANGED FOR SECURITY PURPOSES USE YOUR OWN');