iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 12
1
Modern Web

Node JS-Back end見聞錄系列 第 12

Node.js-Backend見聞錄(11):關於後端觀念(七)-如何設定資料庫

Node.js-Backend見聞錄(11):關於後端觀念(七)-如何設定資料庫

前言

這篇文章將接續關於後端觀念(四)-怎麼建立後端開發環境,該篇將會針對「設定資料庫」來進行分享。

關於後端觀念(四)-怎麼建立後端開發環境中,我們已經建置好MySQL的環境,接著就來設置我們要在下個階段,也就是實作階段所要進行「會員系統」所需要的MySQL資料庫設定。

其步驟分為:

  1. 建立新的database
  2. 建立新的database帳戶
  3. 建立table

建立新的database

在建立新的database前,我們先啟動在Homebrew中安裝的MySQL。在開啟terminal後,其指令為:

$ brew services start mysql

接著做登入MySQL的root權限。

$ mysql -u root -p 
(輸入root密碼)

註記:若是用筆者的安裝方式,會沒有root的預設密碼。也就是我們輸入上述指令後,按下enter就能進入MySQL。

成功登入後,就會轉換到MySQL的指令模式,這時我們先建立名稱為「member」的會員資料庫,並設定資料庫的編碼為utf8。(這邊若沒有設定,則會讓資料庫中的中文資料顯示為亂碼,且設定完後也會讓在該資料庫底下的資料表都默認是utf8。但也可以選擇直接在資料表那邊設定,但這樣就會變成假設後續有多個資料表要新建,都需要重複設定編碼才行。)

mysql> CREATE DATABASE member DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

建立新的database帳戶

在實務上是不會把DB root帳戶直接給程式用,所以我們先建立一個新的DB帳戶供程式開發所使用。(這邊以帳戶:test、密碼: 1234來舉例)

mysql> create user 'test'@'localhost' IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.00 sec)

之後在讓test帳戶,擁有更改member資料庫的權限:

mysql> GRANT ALL PRIVILEGES ON member.* TO 'test'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

之後在離開MySQL使用新的帳戶登入

$ mysql -u test -p
(密碼輸入1234)

就能透過帳戶test對member資料庫來進行操作。

建立table

先預設一個會員系統可能會需要下列資訊:

  • id: 會員ID
  • name: 會員名稱
  • email: 信箱
  • password: 密碼
  • img: 大頭貼
  • img_name: 圖片名稱
  • update_date: 更改會員資料時間
  • create_date: 會員資料建立時間

接著先透過剛剛建立好的帳戶(test)來切換到MySQL的指令模式:

$ mysql -u test -p
(密碼輸入1234)

然後在切換到”member”的database去

mysql> USE member;

之後就開始建立一個”member_info”的table,並加入剛剛提的這些欄位:

mysql> CREATE TABLE member_info (
    -> id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(30) NOT NULL,
    -> email VARCHAR(30) NOT NULL,
    -> password VARCHAR(200) NOT NULL,
    -> img LONGBLOB,
    -> img_name VARCHAR(20),
    -> update_date DATETIME,
    -> create_date DATETIME NOT NULL);

在上述設定當中,較為特別的是:

  • id: 設定為是主要的索引(index)並讓它能自動增加編號。
  • name, email, password, create_date: 設定為不能是空值。
  • img: 設定為LONGBLOB是因為後續會將img透過base64碼來存入圖片,所以需要非常大量的儲存空間。

關於data type的說明可以參考:
MySQL :: MySQL 5.7 Reference Manual :: 12 Data Types

之後我們可以透過DESCRIBE指令,來觀看整個table的data type:

mysql> DESCRIBE member_info;
+-------------+-------------+------+-----+---------+---------------+
| Field       | Type        | Null | Key | Default | Extra         |  
+-------------+-------------+------+-----+---------+---------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment| 
| name        | varchar(30) | NO   |     | NULL    |               | 
| email       | varchar(30) | NO   |     | NULL    |               | 
| password    | varchar(200)| NO   |     | NULL    |               | 
| img         | longblob    | YES  |     | NULL    |               |
| img_name    | varchar(20) | YES  |     | NULL    |               |
| update_date | datetime    | YES  |     | NULL    |               |
| create_date | datetime    | NO   |     | NULL    |               |
+-------------+-------------+------+-----+---------+---------------+
8 rows in set (0.00 sec)

小結

在設定好資料庫後,就能開始實做「會員註冊」的功能啦!終於要進入到程式實做的階段了!


上一篇
Node.js-Backend見聞錄(10):關於後端觀念(六)-關於MVC
下一篇
Node.js-Backend見聞錄(12):實作-會員系統(一)-會員註冊(一)
系列文
Node JS-Back end見聞錄31

尚未有邦友留言

立即登入留言