多xoops站点共享用户表的方法 [技术论坛 - XOOPS综合讨论区] imag1
Tag: xoops4u  

正在浏览:   1 名游客






多xoops站点共享用户表的方法
初级会员
注册日期:
2006/7/14 1:22
所属群组:
注册会员
帖子: 36 | 精华: 5
等级: 4; EXP: 76
HP: 0 / 94
MP: 12 / 745
离线
原文 请浏览 http://www.xoops4u.cn/modules/article/view.article.php/c2/20

本方法已在下述环境中通过验证
xoops版本 : 2.0.15
mysql版本 : 5.0.21
该方法中的sql语句并不需要mysql5,它使用的MySQL的MERGE存储引擎只需要MySQL版本不低于3.23.25。


具体步骤:
1、安装主站点,数据库为db1,数据库表的前缀为 site1;
2、安装子站点,数据库为db2,数据库表的前缀为 site2;
3、用phpMyadmin执行下列的sql语句

DROP TABLE db2.site2_groups;
CREATE TABLE db2.site2_groups (
groupid smallint(5) unsigned NOT NULL auto_increment,
name varchar(50) NOT NULL default '',
description text NOT NULL,
group_type varchar(10) NOT NULL default '',
KEY groupid (groupid),
KEY group_type (group_type)
) TYPE= MyISAM ENGINE=MERGE UNION=(db1.site1_groups) INSERT_METHOD=FIRST;

DROP TABLE db2.site2_groups_users_link;
CREATE TABLE db2.site2_groups_users_link (
linkid mediumint(8) unsigned NOT NULL auto_increment,
groupid smallint(5) unsigned NOT NULL default '0',
uid mediumint(8) unsigned NOT NULL default '0',
KEY linkid (linkid),
KEY groupid_uid (groupid,uid)
) TYPE= MyISAM ENGINE=MERGE UNION=(db1.site1_groups_users_link) INSERT_METHOD=FIRST;

DROP TABLE db2.site2_users;
CREATE TABLE db2.site2_users (
uid mediumint(8) unsigned NOT NULL auto_increment,
name varchar(60) NOT NULL default '',
uname varchar(25) NOT NULL default '',
email varchar(60) NOT NULL default '',
url varchar(100) NOT NULL default '',
user_avatar varchar(30) NOT NULL default 'blank.gif',
user_regdate int(10) unsigned NOT NULL default '0',
user_icq varchar(15) NOT NULL default '',
user_from varchar(100) NOT NULL default '',
user_sig tinytext NOT NULL,
user_viewemail tinyint(1) unsigned NOT NULL default '0',
actkey varchar(8) NOT NULL default '',
user_aim varchar(18) NOT NULL default '',
user_yim varchar(25) NOT NULL default '',
user_msnm varchar(100) NOT NULL default '',
pass varchar(32) NOT NULL default '',
posts mediumint(8) unsigned NOT NULL default '0',
attachsig tinyint(1) unsigned NOT NULL default '0',
rank smallint(5) unsigned NOT NULL default '0',
level tinyint(3) unsigned NOT NULL default '1',
theme varchar(100) NOT NULL default '',
timezone_offset float(3,1) NOT NULL default '0.0',
last_login int(10) unsigned NOT NULL default '0',
umode varchar(10) NOT NULL default '',
uorder tinyint(1) unsigned NOT NULL default '0',
notify_method tinyint(1) NOT NULL default '1',
notify_mode tinyint(1) NOT NULL default '0',
user_occ varchar(100) NOT NULL default '',
bio tinytext NOT NULL,
user_intrest varchar(150) NOT NULL default '',
user_mailok tinyint(1) unsigned NOT NULL default '1',
PRIMARY KEY (uid),
KEY uname (uname),
KEY email (email),
KEY uiduname (uid,uname),
KEY unamepass (uname,pass)
) TYPE= MyISAM ENGINE=MERGE UNION=(db1.site1_users) INSERT_METHOD=FIRST;


以上语句将会删除db2中的 site2_users/site2_groups等表,然后创建一个指向db1中的同名数据表的"虚拟"表,因此, 在两个xoops站点共享了主站点的用户表。

这里没必要对系统进行hack,将来的版本如有改动,系统升级也不会有任何问题,只需先把主站点升级,然后再升级子站点即可。

需要注意的是:
1、子站点中所使用的mysql用户必须对主站点中的users/groups/users_groups三个表有足够的权限。
2、如果是虚拟主机用户,只有一个数据库的操作权限的时候,可以把主站点和子站点用相同的数据库/用户/密码进行安装,但数据表的前缀不同。然后把上面的sql语句中的数据库名(db1/db2)去掉即可。

参考 帖子 http://www.xoops.org/modules/newbb/vi ... t&topic_id=46590&forum=14

2006/10/31 23:04
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 多xoops站点共享用户表的方法
新进会员
注册日期:
1/21 23:38
所属群组:
注册会员
帖子: 6
等级: 1; EXP: 47
HP: 0 / 11
MP: 2 / 6
离线
今天才发现共享用户表在创建大学校园各部门和院系的网站集群方面有相当不错的应用。顶一个这个贴子,也希望以后XOOPS的发展中加入网站集群创建方面的功能,让各网站之间共享新闻下载等资源,而各网站之间又有相对独立,以后在在校园网站群、大型企业和连锁店等领域就有相当的优势了。

3/18 13:02
工具箱 短消息 Email PDF 书签 打印 举报 回顶部


回复: 多xoops站点共享用户表的方法
高级会员
注册日期:
2008/3/16 18:35
来自 山东 青岛
所属群组:
注册会员
帖子: 77 | 精华: 1
等级: 7; EXP: 71
HP: 0 / 167
MP: 25 / 506
离线
好老的贴子啊 不过挺不错的 有空该翻翻xoops的家底了 古董不少啊

3/18 14:00
_________________
快乐每一天 奋斗到永远!

村里村外 欢迎您! www.cunlicunwai.cn
工具箱 短消息 Email PDF 书签 打印 举报 回顶部





不可查看帖子。
不可发帖。
不可回复。
不可编辑自己的帖子。
不可删除自己的帖子。
不可发起投票调查。
不可在投票调查中投票。
不可上传附件。
不可不经审核直接发帖。
不可使用主题类别。
不可以使用HTML语法。
不可以使用签名档。

[高级搜索]