爲了響應
nodejs
的大紅大紫,最近應用其實現了一些server端的功能。數據庫方面選擇了老少咸宜的MySQL
。今後肯定還會有相關應用需求。特此記錄Mac
系統下如何安裝、配置MySQL
及其管理工具Squel Pro
。
Why MySQL
數據庫有很多,爲什麼麼我選擇了MySQL
呢。
- 關係型數據庫 or NoSQL
近年來NoSQL大紅大紫,其中佼佼者mongoDB
更是方便易用。二者的優劣細節討論起來恐怕不是一篇文章能夠搞定的。此處大概總結如下:- 適合使用SQL開發的項目:
可以預先定義邏輯相關的離散數據的需求
數據一致性是必要的
具有良好的開發者經驗和技術支持的標準的成熟技術 - 適合使用NoSQL開發的項目:
不相關,不確定和逐步發展的數據需求
更簡單或者更寬鬆的能夠快速開始編程的項目
速度和可擴展性至關重要的
- 適合使用SQL開發的項目:
由於我們的需求比較明確,關係比較固定,並且業務量不大,速度要求不高。相反對於邏輯要求比較嚴格,所以選擇傳統的關係型數據庫。
- Why MySQL
確定了使用關係型數據庫,這個問題反而容易解決了,直接隨大流MySQL
似乎成了絕大多數人的選擇。我個人總結原因如下:- 開源,免費。
- 主流,速度快,性能足夠。
- 用戶多,社區活躍。
- 配套工具多,簡單易用。
安裝MySQL
-
Homebrew
可以選擇官網下載安裝,但是命令行畢竟方便太多了,如果沒有homebrew
,請打開Terminal,使用以下命令安裝。# 安裝homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # 驗證安裝正確 brew doctor
- 安裝
MySQL
此時注意到提示如下,所以先啓動服務,再運行相關命令:brew install mysql
We’ve installed your MySQL database without a root password. To secure it run:
mysql_secure_installation - 啓動
MySQL
服務mysql.server start
- 按提示
mysql_secure_installation
,設置用戶名以及密碼
這裏按照提示一步一步設置就可以了,主要包括,選定密碼強度,設置密碼,確認密碼,是否刪除無密碼用戶,是否允許遠程root登錄,刪除自帶test數據庫。mysql_secure_installation
- 登錄測試一下
mysql -u root -p
MySQL基本命令
雖然作爲FE,我們最終選擇了圖形化管理工具Squel Pro
,但是一些基本的命令還是需要掌握的。應用場景還是很多,比如,只是想做一個快速校驗,或者是在他人電腦上,以及遠程登錄數據庫時。
- 基本命令
# 查看有哪些數據庫 show databases; # 查看當前使用的是哪個數據庫 select database(); # 選擇數據庫 use [database-name]; # 顯示數據庫中的tables show tables; # 建立數據庫 CREATE DATABASE [new-database-name];
- 新建用戶。
# 給localhost創建用戶nodejs,並將密碼設置爲nodejs create user 'nodejs'@'localhost' identified by 'nodejs'; # 將用戶權限信息從數據表同步到內存(此命令可以避免重啓mysql服務) FLUSH PRIVILEGES;
- 授予權限。
接下來我們爲當前應用創建一個名爲nodejs的數據庫,並將其權限全部賦予user nodejs.CREATE DATABASE nodejs; GRANT ALL PRIVILEGES ON nodejs.* TO 'nodejs'@'%' IDENTIFIED BY 'nodejs';
Sequel Pro
登陸後軟件界面如上圖所示。可以簡單看到如下功能:
- 左上角數據庫選擇,可以管理數據庫
- 左側欄
TABLES
,可以管理數據表 - 中間主要區域,可以管理數據表中數據。
- 右上角
Users
,可以管理用戶。 - 右上角
Console
,可以方便運行Mysql命令。
安裝
官網下載安裝包後運行即可。
登錄
界面如下,輸入Host
,Username
,Password
即可登錄。此處建議使用新建的nodejs用戶登錄管理nodejs
數據庫。除建立新用戶、給新用戶授予權限外,爲安全原因,不建議使用root
用戶。
使用
登陸後點擊右上角,可以看到選擇數據庫,新建數據庫等等信息,就可以開始查看、管理數據庫了。由於工具本身圖形界面做的重點突出使用方便,此處不再贅述。