MySQL环境安装设置
ubuntu环境安装mysql-server和mysql开发包,包括mysql头文件和动态库文件,命令如下:
sudo apt-get install mysql-server =》 安装最新版MySQL服务器sudo
apt-get install libmysqlclient-dev =》 安装开发包
ubuntu默认安装最新的mysql,但是初始的用户名和密码是自动生成的,按下面步骤修改mysql的root用户密码为123456
【step 3】重新用root和123456登录mysql-server
【step 4】设置MySQL字符编码utf-8,可以支持中文操作
MySQL数据库编程
我们处于mysql客户端的角色,向mysql-server增删改查操作
这里用UserModel示例,通过UserModel如何对业务层封装底层数据库的操作。代码示例如下:
集群聊天服务器项目表的设计
首先就是要解决数据的问题,作为一个聊天系统,我们的服务器端肯定要有用户的信息,比如说账号,用户名,密码等。
在登录的时候,我们可以查询这个表里面的信息对用户身份进行验证,在注册的时候,我们则可以往表里面去写入数据。
User表
用户登录之后,首先就是进行聊天业务,我们必须要知道该用户的好友都有谁。
在加好友时,我们就可以往这张表里面去写入信息并在一对一聊天时查询这里面的信息去看好友是否在线。
Friend表
然后便是群组业务了,群组中我们需要有一个记录群组信息的表,方便我们创建群时往其中去写入数据;
AllGroup表
同时群里面肯定是有群员的,我们就需要一个记录群成员的表,我们在加入群的时候,把用户id写入这个表。并且在发送群消息的时候查询这个表由服务器向这些成员转发消息。
GroupUser表
我们的设计目的又要存储离线消息,这就涉及到离线消息发给谁,谁发的,发的什么三个问题,所以我们又需要一个新表来存储离线消息。这样我们一旦有离线消息便可以往这个表里面去写入数据。
OfflineMessage表
MYSQL创建数据库chat和表
创建表的语句
USE chat;
CREATE TABLE `user`
(
id INT AUTO_INCREMENT,
name VARCHAR(50) NOT NULL UNIQUE,
`password` VARCHAR(50) NOT NULL,
state ENUM('online','offline') DEFAULT'offline',
PRIMARY KEY(id)
)ENGINE=INNODB;
CREATE TABLE friend
(
`userid` INT NOT NULL,
`friendid` INT NOT NULL,
PRIMARY KEY(`userid`,`friendid`)
)ENGINE=INNODB;
CREATE TABLE allgroup
(
id INT AUTO_INCREMENT,
groupame VARCHAR(50) NOT NULL UNIQUE,
groupdesc VARCHAR(200) DEFAULT'',
PRIMARY KEY(id)
)ENGINE=INNODB;
CREATE TABLE groupuser
(
groupid INT NOT NULL,
userid INT NOT NULL,
groupprole enum('creator','normal') DEFAULT'normal',
PRIMARY KEY(groupid,userid)
)ENGINE=INNODB;
CREATE TABLE offlinemessage
(
userid INT NOT NULL,
message VARCHAR(500) NOT NULL
)ENGINE=INNODB;