前言:
前面配置好了pomelo基于websocket的聊天室。接下來,我們準備為這個聊天室增加一個注冊系統(tǒng),首先,在系統(tǒng)中安裝數(shù)據(jù)庫。根據(jù)實際項目需求,數(shù)據(jù)庫只需要穩(wěn)定,訪問頻度和壓力都不大,所以我們選MySql,而不用Mongodb。官方文檔中可以看到,還有個比較完整的mmorpg游戲的例子lordofpomelo,里面采用了MySql數(shù)據(jù)庫,我們可以把它的這些相關代碼以及部分數(shù)據(jù)庫結構學習過來。只拷貝符合我們需求的代碼。
1. 安裝MySql數(shù)據(jù)庫:
sudo apt install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
安裝mysql-server的時候,顯示如下信息,要求輸入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:
需要重復輸入一次,設置好了root密碼。
檢查端口狀態(tài):sudo netstat -tap | grep mysql
如果看到有mysql 的socket處于 listen 狀態(tài)則表示安裝成功。
進入數(shù)據(jù)庫:
sudo mysql -u root -p
-u 表示選擇登陸的用戶名, -p 表示登陸的用戶密碼,上面命令輸入之后會提示輸入密碼,此時輸入密碼就可以登錄到mysql。
可以直接在MySql命令行用SQL命令創(chuàng)建庫、表,執(zhí)行查詢等等。
2.安裝圖形化工具MySql Workbench
用命令行固然簡單,但是有個圖形化工具能更直觀??梢灾苯佑胊pt安裝:
sudo apt install mysql-workbench
安裝好之后的樣子:

登錄進去之后,創(chuàng)建一個schema:Dev,然后執(zhí)行下面的Sql語句:
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)建一個user表,用于記錄用戶登錄信息。也可以直接在圖形界面設計:

注意:圖中的name和password的長度都是16,是早期的截圖。后面考慮密碼加密等問題,還是將這兩個字段都改成50,VARCHAR在數(shù)據(jù)庫中長度是可變的,這里定義的長度只是最大長度,實際占用空間并不會比定義成16更多。
再創(chuàng)建一個玩家表,用于記錄玩家在游戲中的數(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ù)庫和表就配置好了。有了圖形化工具,以后要增刪字段就很方便。比如這個Player表,明顯少記錄了一項:玩家在游戲中的游戲代幣數(shù)量,以后用到再加吧。
3. 配置連接參數(shù):
由于數(shù)據(jù)庫的連接參數(shù)game-server和web-server都需要用到,所以最好放到一個共享目錄。在項目根目錄建立一個shared目錄,再在下面建立個config目錄,在config下面新建一個文件mysql.js,配置連接數(shù)據(jù)庫的參數(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ù)庫名是我們建立的Dev, 賬號最好不要用root。自己用root進入MySql后新建立一個對Dev庫有完整權限的dev賬號即可。我直接在workbench下建立的,點菜單上的Server,選"Users and Privileges",點"Add Account"……