MySQL簡介:
MySQL是一個小型關係型數據庫管理系統,開發者爲瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。而2009年,SUN又被Oracle收購。MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內。這樣就增加了速度並提高了靈活性。MySQL的SQL“結構化查詢語言”。SQL是用於訪問數據庫的最常用標準化語言。MySQL軟件採用了GPL(GNU通用公共許可證)。由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站爲了降低網站總體擁有成本而選擇了MySQL作爲網站數據庫。
MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。
在數據庫中,我們常見的操作有以下:
操作命令 | 操作說明 |
---|---|
INSERT | 允許它們將行插入表中 |
CREATE | 允許他們創建新的表或數據庫 |
UPDATE | 允許他們更新錶行 |
DELETE | 允許他們從表中刪除行 |
DROP | 允許他們刪除表或數據庫 |
SELECT | 允許他們使用該SELECT 命令讀取數據庫 |
GRANT OPTION | 允許他們授予或刪除其他用戶的權限 |
ALL | 所有特權,正如我們之前看到的,這將允許MySQL用戶完全訪問指定的數據庫(或者如果沒有選擇數據庫,則跨系統進行全局訪問) |
在MySQL中,一般授予用戶的權限有以下五種常見方式:
全局層級權限、數據庫層級權限、表層級別權限、列層級別權限、子程序層級權限。
1.全局層級
全局權限適用於一個給定服務器中的所有數據庫。這些權限存儲在mysql.user表中通常用【grant all on .】來授予全局權限和【revoke all on .】撤銷全局權限。
2.數據庫層級
數據庫權限適用於一個給定數據庫中的所有目標。這些權限存儲在mysql.db和mysql.host表中。【grant all on db_name .】和【 revoke all on db_name .】只授予和撤銷數據庫權限。
3.表層級
表權限適用於一個給定表中的所有列。這些權限存儲在mysql.tables_priv表中。【grant all on db_name.tbl_name.】和【revoke all on db_name.tbl_name.】只授予和撤銷表權限。
4.列層級
列權限適用於一個給定表中的單一列。這些權限存儲在mysql.columns_priv表中。當使用revoke時,您必須指定與被授權列相同的列。
5.子程序層級
create routine, alter routine, execute 和 grant權限適用於已存儲的子程序。這些權限可以被授予爲全局層級和數據庫層級。而且,除了CREATE ROUTINE外,這些權限可以被授予爲子程序層級,並存儲在mysql.procs_priv表中。
具體操作:
1.創建用戶【create user 'newuser'@'localhost' identifed by 'password';】
我們指定新用戶【newuser】的主機爲localhost
而不是服務器的IP地址。localhost只
是一個主機名,意思是“這臺計算機”,MySQL專門處理這個特定的主機名:當有該主機的用戶登錄MySQL時,它將嘗試使用Unix套接字文件連接到本地服務器。因此,localhost
通常在計劃通過SSH連接到服務器或運行本地mysql
客戶端連接到本地MySQL服務器時使用。
此時,剛建好的新用戶【newuser】對數據庫是沒有任何的執行操作權限;因此,首先要做的就是爲新用戶提供他們所需的訪問權限。
2.給用戶授權【grant 權限 privileges on *.* to 'newuser'@'localhost';】
此命令中的星號指的是新用戶【newuser】可以訪問的數據庫和表(分別)
權限若是寫的 all 則表示:允許用戶讀取,寫入,執行 所有數據庫和表的權限;此權限相當於root的訪問權限,但對於大多數用例來說可能是不切實際的,並且可能會使您的數據庫的安全性處於高風險。
PS:一條授權命令可以配置多個權限,權限之間用英文逗號隔開
:grant update, selcet on [數據庫名字].[數據表名字] to [用戶名]@'localhost';
如果您需要撤消權限,則語法結構幾乎與授予權限基本相同:
只是將grant 修改爲 revoke ;將 to 修改爲 from
【revoke delete on database_name.table_name from 'newuser'@'localhost';】
3.每次更新或更改權限時,請務必使用“刷新權限”命令【flush privileges;】
4.查看用戶的當前權限:【show gaants newuser;】