由於現在安裝 MySQL 真是太方便了,Linux 上面隨便 APT 或是 YUM 就可以拉下來裝,還是最新版的,所以我這邊就不說明安裝的部份了,而直接切入初始化管理者帳號的部份
MySQL 中預設的管理者帳號就是 root 啦!
用以下語法就可以進行設定:(兩種任選一種吧!)
shell> mysqladmin -u root password '<管理者密碼>'
shell> mysqladmin -h <主機位址或名稱> -u root password '<管理者密碼>'
登入 MySQL Server
登入方式如下:
shell> mysql -h <host> -u <user> -p參數說明:
Enter password: ********
-h
指定要連線的主機
-u
進行連線的使用者名稱
-p
在下一個步驟時輸入使用者密碼
若要離開 MySQL 則是相當簡單,只要在命令提示字元下達 quit 即可離開。
參考連結:
下達指令前的注意事項
在 MySQL 的命令提示字元中下達指令,有以下幾點必須注意:
- 每個指令必須以分號(;)作為結束
- 輸入 Enter 不代表指令結束,若沒有加入分號,則會被視為同一個指令
- 每個指令都有其代表的關鍵字,輸入的是大小寫並不會影響執行的結果
資料庫建立與相關資訊的擷取
1、建立、使用、查詢資料庫(Database)
要使用 MySQL,當然要懂得如何建立一個新的資料庫了! 假設這邊要建立的資料庫名稱為 MyDB,不需額外指定 character set 以及 collate,則建立的語法如下:
mysql> CREATE DATABASE MyDB;接著可以查詢資料庫是否建立成功,可用下列指令:
mysql> SHOW DATABASES;在上個步驟中,一共有出現三個資料庫,若要使用剛剛建立的資料庫 MyDB,應該要怎麼做呢? 只要下達以下指令即可:
mysql> USE MyDB;透過 USE 關鍵字,就可以指定要使用的資料庫為何。
Database changed
參考連結:
2、資料表(Table)的建立與查詢
其實建立 Table 的語法介紹是很複雜的,column、index、reference.....etc,都有複雜的設定語法,不過在這邊以簡單為主,以下就來個建立 table 的範例:
mysql> CREATE TABLE pet (若是要查詢有哪些 table 在資料庫,以及 table 的詳細結構呢? 可以用以下的語法:
-> name VARCHAR(20),
-> owner VARCHAR(20),
-> species VARCHAR(20),
-> sex CHAR(1),
-> birth DATE,
-> death DATE );
# 查詢資料庫有哪些 table參考連結:
mysql> SHOW TABLES;
# 查詢 table 結構
mysql> DESCRIBE pet;
批次模式(Batch Mode)
何謂 batch mode? 就是一次執行大量的 SQL 命令!
而 batch mode 應該用在什麼地方? 又有什麼好處呢? 以下做個簡單說明:
- 當一個例行性工作需要執行大量的 SQL 命令時,將這些命令寫成純文字檔,再開發 script 將其以 batch mode 進行,方便也不容易出錯
- 當多台電腦要執行相同且大量的 SQL 命令時,將命令編輯成純文字檔,以 batch mode 進行,快速也不會出錯
- 假設一次要建立 database 中的所有 table,可將命令先編輯為純文字檔,再以 batch mode 進行,比較不容易出錯
- 如果查詢結果將會產生大量輸出時,也可以利用 batch mode 將結果輸出至其他檔案觀看(亦可搭配 more 或是 less 等指令分頁瀏覽)
- 在某些情況下必須用 batch mode,例如執行例行性(cron)的資料庫相關工作,不允許使用互動模式。
基本上,batch mode 相當好用,不論是一次將所有 table 以及相關資料建立完成,或是將備份資料還原回資料庫,甚至是一些例行性的資料庫工作,都可能會使用到這個功能。
一般來說,若要進行 batch mode,必須將要執行的 SQL 命令編輯為一個純文字檔案,才可以正確執行。
【註】在備份時,用指令 dump 出來的也是純文字檔案
若要執行 batch mode 的 SQL 命令,必須使用「mysql」指令,另外還必須指定主機位址、使用者帳號密碼、儲存SQL命令的純文字檔....等資訊,以下用範例來介紹:
shell> mysql -h <主機位址> --user=<登入帳號> --password='<登入密碼>' <資料庫名稱> < <檔案名稱>當然上述的語法是最詳細的方式,因為所有的參數都指定上去了,但是其實許多情況下,並沒有如此複雜,可以視以下情況進行修改:
- 在本機執行,則 -h 參數就可以不需指定
- 若想要後來再打密碼,也可以改用 -p 指令,就不需要在指令中就輸入密碼
- 若檔案內容中有「use 資料庫名稱;」的內容,也不需再指定資料庫為何了
然而,以 batch mode 執行大量 SQL 命令時,有可能會有許多訊息的輸出,若是想要捕捉這些訊息,可以搭配 more 或是 less 指令,或是以 redirect 的方式將訊息輸出到指定檔案中,以下是兩種輸出方式的語法介紹:
# 以 more 進行分頁瀏覽參考連結:
shell> mysql < batch-file | more
# 將訊息全部輸出至檔案 mysql.out 中
shell> mysql < batch-file > mysql.out
帳號與權限的控管
1、建立帳號
在一台剛安裝完 MySQL 的機器中,使用者只有 root 一個,但總不能每次存取 database 都用 root 的權限吧.....
所以這裡介紹怎麼新增帳號,首先以下是新增帳號的語法:
CREATE USER <使用者帳號> [IDENTIFIED BY [PASSWORD] '<使用者密碼>']由上面的語法可以看出,可以一次增加多個帳號,不過以下只用個簡單範例來說明,建立一個帳號即可:
[, <使用者帳號> [IDENTIFIED BY [PASSWORD] '<使用者密碼>']] ...
# 建立登入帳號為「testuser」,登入密碼為「thisispassword」
mysql> CREATE USER testuser IDENTIFIED BY 'thisispassword';
2、權限設定
新增了帳號之後,若沒有設定相關資料庫的權限,也只能用該帳號登入 MySQL 而已,卻不能做任何事情,因此要給帳號分配資料庫權限,而由於這邊因為只是簡單介紹,就用分配給某帳號某個資料庫的所有權限為例好了! 以下是簡單的範例:
# 分配資料庫 MyDB 所有的存取權限給使用者 testuser,並限制僅能本機存取,密碼為 thisispassword參考連結:
mysql> GRANT ALL PRIVILEGES ON MyDB.* TO 'testuser'@'localhost' IDENTIFIED BY 'thisispassword';
# 在主機端的部份,也可以用萬用字元「%」
mysql> GRANT ALL PRIVILEGES ON MyDB.* TO 'testuser'@'%' IDENTIFIED BY 'thisispassword';
# 進行權限分配後,還要將資料 flush
mysql> FLUSH PRIVILEGES;
備份
備份對資料庫來說,是絕對不可或缺的,因此定期的備份工作是需要的;不過由於這裡僅是做個簡單介紹,因此就以最簡單的備份方式來說明,直接指定某個資料庫完整備份,以下是備份的指令:
# 需要輸入 root 的密碼透過此種方式,會產生出一個可以用來還原 database 的純文字檔,只要透過上面說的 batch mode,就可以將資料庫還原了。(尚未說明使用者以及權限的相關備份)
shell> mysqldump -u root <資料庫名稱> -p > <檔案名稱>
Enter password: ********
# 直接指定 root 密碼,此種方式適合用於撰寫自動化備份的 shell script 時用
shell> mysqldump -u root --password='<密碼>' <資料庫名稱> > <檔案名稱>
參考連結:
沒有留言:
張貼留言