前言:
前面配置好了pomelo基于websocket的聊天室蹬癌。接下來捻勉,我們準(zhǔn)備為這個(gè)聊天室增加一個(gè)注冊(cè)系統(tǒng)镀梭,首先,在系統(tǒng)中安裝數(shù)據(jù)庫(kù)踱启。根據(jù)實(shí)際項(xiàng)目需求报账,數(shù)據(jù)庫(kù)只需要穩(wěn)定研底,訪問頻度和壓力都不大,所以我們選MySql透罢,而不用Mongodb榜晦。官方文檔中可以看到,還有個(gè)比較完整的mmorpg游戲的例子lordofpomelo羽圃,里面采用了MySql數(shù)據(jù)庫(kù)乾胶,我們可以把它的這些相關(guān)代碼以及部分?jǐn)?shù)據(jù)庫(kù)結(jié)構(gòu)學(xué)習(xí)過來。只拷貝符合我們需求的代碼朽寞。
1. 安裝MySql數(shù)據(jù)庫(kù):
sudo apt install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
安裝mysql-server的時(shí)候识窿,顯示如下信息,要求輸入root密碼:
While not mandatory, it is highly recommended that you set a password
for the MySQL administrative "root" user.
If this field is left blank, the password will not be changed.
New password for the MySQL "root" user:
需要重復(fù)輸入一次愁憔,設(shè)置好了root密碼腕扶。
檢查端口狀態(tài):sudo netstat -tap | grep mysql
如果看到有mysql 的socket處于 listen 狀態(tài)則表示安裝成功。
進(jìn)入數(shù)據(jù)庫(kù):
sudo mysql -u root -p
-u 表示選擇登陸的用戶名吨掌, -p 表示登陸的用戶密碼半抱,上面命令輸入之后會(huì)提示輸入密碼,此時(shí)輸入密碼就可以登錄到mysql膜宋。
可以直接在MySql命令行用SQL命令創(chuàng)建庫(kù)窿侈、表,執(zhí)行查詢等等秋茫。
2.安裝圖形化工具M(jìn)ySql Workbench
用命令行固然簡(jiǎn)單史简,但是有個(gè)圖形化工具能更直觀「刂可以直接用apt安裝:
sudo apt install mysql-workbench
安裝好之后的樣子:
登錄進(jìn)去之后凶硅,創(chuàng)建一個(gè)schema:Dev挺峡,然后執(zhí)行下面的Sql語(yǔ)句:
CREATE TABLE `User` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8 NOT NULL,
`password` varchar(50) DEFAULT '',
`loginCount` smallint(6) unsigned DEFAULT '0',
`lastLoginTime` bigint(20) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
創(chuàng)建一個(gè)user表拴泌,用于記錄用戶登錄信息省骂。也可以直接在圖形界面設(shè)計(jì):
注意:圖中的name和password的長(zhǎng)度都是16,是早期的截圖局荚。后面考慮密碼加密等問題超凳,還是將這兩個(gè)字段都改成50,VARCHAR在數(shù)據(jù)庫(kù)中長(zhǎng)度是可變的耀态,這里定義的長(zhǎng)度只是最大長(zhǎng)度轮傍,實(shí)際占用空間并不會(huì)比定義成16更多。
再創(chuàng)建一個(gè)玩家表首装,用于記錄玩家在游戲中的數(shù)據(jù):
CREATE TABLE `Player` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`userId` bigint(20) unsigned NOT NULL DEFAULT '0',
`nickname` varchar(50) CHARACTER SET utf8 NOT NULL DEFAULT '',
`level` smallint(6) unsigned DEFAULT '1',
`experience` bigint(20) unsigned DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `INDEX_GAME_NAME` (`nickname`),
KEY `INDEX_PALYER_USER_ID` (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
這樣我們最基本的數(shù)據(jù)庫(kù)和表就配置好了创夜。有了圖形化工具,以后要增刪字段就很方便仙逻。比如這個(gè)Player表挥下,明顯少記錄了一項(xiàng):玩家在游戲中的游戲代幣數(shù)量揍魂,以后用到再加吧。
3. 配置連接參數(shù):
由于數(shù)據(jù)庫(kù)的連接參數(shù)game-server和web-server都需要用到棚瘟,所以最好放到一個(gè)共享目錄。在項(xiàng)目根目錄建立一個(gè)shared目錄喜最,再在下面建立個(gè)config目錄偎蘸,在config下面新建一個(gè)文件mysql.js,配置連接數(shù)據(jù)庫(kù)的參數(shù):
{
"development": {
"host" : "127.0.0.1",
"port" : "3306",
"database" : "Dev",
"user" : "dev",
"password" : "abcd1234"
},
"production": {
"host" : "127.0.0.1",
"port" : "3306",
"database" : "Dev",
"user" : "dev",
"password" : "abcd1234"
}
}
數(shù)據(jù)庫(kù)名是我們建立的Dev, 賬號(hào)最好不要用root瞬内。自己用root進(jìn)入MySql后新建立一個(gè)對(duì)Dev庫(kù)有完整權(quán)限的dev賬號(hào)即可迷雪。我直接在workbench下建立的,點(diǎn)菜單上的Server虫蝶,選"Users and Privileges"章咧,點(diǎn)"Add Account"……