MySQL环境搭建和项目表的设计

74 阅读3分钟

一、MySQL环境安装设置

ubuntu环境安装mysql-server和mysql开发包,包括mysql头文件和动态库文件,命令如下:

sudo apt-get install mysql-server                # 安装最新版MySQL服务器
sudo apt-get install libmysqlclient-dev          # 安装mysql开发包

ubuntu默认安装最新的mysql,但是初始的用户名和密码是自动生成的,按下面步骤修改mysql的root用户密码为123456

1. 查看debian-sys-maint密码

image.png

2. 登录debian-sys-maint用户,并将MySQL的root用户的密码修改为简单密码123456

mysql -u debian-sys-maint -pSxrXxEtr9PPMkj7L
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

image.png

3. 重新用root和123456登录mysql-server,并设置MySQL字符编码utf-8,可以支持中文操作

image.png

修改表的字符编码:

alter table user default character set utf8;

修改属性的字符编码:

alter table user modify column name varchar(50) character set utf8;

查看mysqld是否启动:sudo netstat -tanp image.png

二、集群聊天服务器项目表设计

1. User表

image.png

注:作为一个聊天系统,我们的服务器端肯定要有用户的信息,比如说账号,用户名,密码等;在登录的时候,我们可以查询这个表里面的信息对用户身份进行验证,在注册的时候,我们则可以往表里面去写入数据

2. Friend表

image.png

注:用户登录之后,首先就是进行聊天业务,我们必须要知道该用户的好友都有谁。在加好友时,我们就可以往这张表里面去写入信息并在一对一聊天时查询这里面的信息去看好友是否在线

3. AllGroup表

image.png

注:然后便是群组业务了,群组中我们需要有一个记录群组信息的表,方便我们创建群时往其中去写入数据

4. GroupUser表

image.png

注:同时群里面肯定是有群成员的,我们就需要一个记录群成员的表,有用户加入群的时候,把用户id写入这个表。并且在发送群消息的时候查询这个表,由服务器向这些成员转发消息

5. OfflineMessage表

image.png

注:我们需要存储离线消息,这就涉及到离线消息谁发的,发给谁,发的什么三个问题,所以我们又需要一个新表来存储离线消息,当目标用户上线时把离线消息发送给用户。我们一旦有离线消息便可以往这个表里面去写入数据

建表的SQL语句:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  `state` enum('online','offline') CHARACTER SET utf8 DEFAULT 'offline',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;

CREATE TABLE `friend` (
  `userid` int(11) NOT NULL,
  `friendid` int(11) NOT NULL,
  KEY `userid` (`userid`,`friendid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `allgroup` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `groupname` varchar(50) CHARACTER SET utf8 NOT NULL,
  `groupdesc` varchar(200) CHARACTER SET utf8 DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `groupname` (`groupname`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

CREATE TABLE `groupuser` (
  `groupid` int(11) NOT NULL,
  `userid` int(11) NOT NULL,
  `grouprole` enum('creator','normal') CHARACTER SET utf8 DEFAULT NULL,
  KEY `groupid` (`groupid`,`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `offlinemessage` (
  `userid` int(11) NOT NULL,
  `message` varchar(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;