设为首页 收藏本站
查看: 1052|回复: 0

[经验分享] openfire3.6.4外连数据库(mysql)

[复制链接]

尚未签到

发表于 2018-9-29 10:51:19 | 显示全部楼层 |阅读模式
openfire作为一个开源的即时消息传输平台,越来越受到大家的青睐.笔者有幸测试了最新openfire3.6.4版本,而且跑通以后的第一个任务就是:使用已有的数据库认证.按照先前的版本的办法,以及官方的外连数据库的说明,都不能搞通.但在官方论坛确实见人有用这个版本成功连接上了.但是没有给出一个一步到位的步骤,只能让人摸着石头过河.笔者费了半天劲总结出来了这一步到位的办法,不敢独享特拿出来.  办法很简单:
  第一步:将下面的数据库语句根据自己的实际情况修改并执行.这一步要求熟悉mysql数据库和基本的sql语句
  UPDATE `openfire`.`ofProperty` SET propValue='org.jivesoftware.openfire.user.JDBCUserProvider' WHERE name='provider.user.className';
  UPDATE `openfire`.`ofProperty` SET propValue='org.jivesoftware.openfire.auth.JDBCAuthProvider' WHERE name='provider.auth.className';
  INSERT INTO `openfire`.`ofProperty` VALUES  ('jdbcProvider.driver','com.mysql.jdbc.Driver'),
  ('jdbcProvider.connectionString','jdbc:mysql://localhost:3306/test?user=rainbird&password=rainbird&useUnicode=true&characterEncoding=utf8'),
  ('admin.authorizedJIDs','rainbird@localhost'),
  ('jdbcAuthProvider.passwordSQL','SELECT password FROM user WHERE username=?'),
  ('jdbcAuthProvider.passwordType','md5'),
  ('jdbcUserProvider.loadUserSQL','SELECT nickname,email FROM user WHERE username=?'),
  ('jdbcUserProvider.userCountSQL','SELECT COUNT(*) FROM user'),
  ('jdbcUserProvider.allUsersSQL','SELECT username FROM user'),
  ('jdbcUserProvider.searchSQL','SELECT username FROM user WHERE'),
  ('jdbcUserProvider.usernameField','username'),
  ('jdbcUserProvider.nameField','nickname'),
  ('jdbcUserProvider.emailField','email');
  第二步:重启openfire
  /etc/init.d/openfire stop
  /etc/init.d/openfire start
  现在用你数据库里的用户记录登陆openfire是不是成功了呢?
  ofProperty这个表,就是用管理员登陆到后台以后,在"服务器管理"->"系统属性"里看到的东东,当然了,也可以直接在那边一条一条的改.当然没有几个语句一执行来的容易.
  解释一下上面的语句:
  两句update修改现有的管理员认证方式和用户认证方式
  新的Insert语句:
  ('jdbcProvider.driver','com.mysql.jdbc.Driver'), 这句是指定数据库的驱动
  ('jdbcProvider.connectionString','jdbc:mysql://localhost:3306/test?user=rainbird&password=rainbird&useUnicode=true&characterEncoding=utf8'), 连接mysql的语句,因为笔者也测试了中文用户名登陆,所以这里加了一些utf8的编码声明.
  ('admin.authorizedJIDs','rainbird@localhost'), 这句是指定系统的管理员,旧的管理员以后就不生效了.多个管理员的话以逗号隔开.要注意的就是格式是:user@domain这样的格式.localhost是现在我的主机名
  ('jdbcAuthProvider.passwordSQL','SELECT password FROM user WHERE username=?'),认证的时候查询密码的语句.从user表查询username对应的password
  ('jdbcAuthProvider.passwordType','md5'),密码的类型:md5 or plain or sha1
  ('jdbcUserProvider.loadUserSQL','SELECT nickname,email FROM user WHERE username=?'),从这一句往下都是相关连的sql语句不再解释
  ('jdbcUserProvider.userCountSQL','SELECT COUNT(*) FROM user'),
  ('jdbcUserProvider.allUsersSQL','SELECT username FROM user'),
  ('jdbcUserProvider.searchSQL','SELECT username FROM user WHERE'),
  ('jdbcUserProvider.usernameField','username'),
  ('jdbcUserProvider.nameField','nickname'),
  ('jdbcUserProvider.emailField','email');
  在测试过程中,笔者同时测试了是不是可以使用其它机器上的数据库.答案是肯定的,将上面的数据库连接的地址改成其它的地址就可以.
  关于中文用户名登陆,已证实:spark的2.5.8版本不可以用中文登陆(据说2.6.0的bata可以用,没有测试)。而pidgin2.5.5是可以用中文登陆的


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-603685-1-1.html 上篇帖子: Mysql 获取成绩排序后的名次 下篇帖子: MySQL5.0已正式交付商用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表