MySQL是一個開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),擁有廣泛的應(yīng)用范圍。在使用MySQL時,為了保證安全性,我們需要設(shè)置用戶的數(shù)據(jù)庫訪問權(quán)限。
MySQL用戶的訪問權(quán)限涉及到兩個方面:對象層次權(quán)限和命令層次權(quán)限。
對象層次權(quán)限:指用戶對于指定數(shù)據(jù)庫的某些對象(如表、視圖等)的訪問權(quán)限控制。
授予用戶在指定數(shù)據(jù)庫中對table的訪問權(quán)限: GRANT 必要的權(quán)限 ON 數(shù)據(jù)庫名.表名 TO '用戶名'@'訪問主機(jī)名';
撤銷用戶在指定數(shù)據(jù)庫中對table的訪問權(quán)限: REVOKE 必要的權(quán)限 ON 數(shù)據(jù)庫名.表名 FROM '用戶名'@'訪問主機(jī)名';
命令層次權(quán)限:指用戶可使用的MySQL命令類型。
授予用戶在數(shù)據(jù)庫中執(zhí)行相關(guān)命令的權(quán)限: GRANT 命令權(quán)限 ON 數(shù)據(jù)庫名.* TO '用戶名'@'訪問主機(jī)名';
撤銷用戶在數(shù)據(jù)庫中執(zhí)行相關(guān)命令的權(quán)限: REVOKE 命令權(quán)限 ON 數(shù)據(jù)庫名.* FROM '用戶名'@'訪問主機(jī)名';
在實(shí)際使用中,根據(jù)需求分配MySQL用戶的訪問權(quán)限,可參考如下模板:
-- 授予用戶SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、INDEX、DROP的對象層次權(quán)限 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP ON 數(shù)據(jù)庫名.表名 TO '用戶名'@'訪問主機(jī)名'; -- 授予用戶SHOW DATABASES、CREATE TEMPORARY TABLES、LOCK TABLES、REFERENCES、EXECUTE、CREATE ROUTINE和ALTER ROUTINE的命令層次權(quán)限 GRANT SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, REFERENCES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON 數(shù)據(jù)庫名.* TO '用戶名'@'訪問主機(jī)名';
設(shè)置MySQL用戶的訪問權(quán)限可以更好的確保數(shù)據(jù)庫的安全性,同時也可根據(jù)不同用戶的需要靈活調(diào)整相應(yīng)的權(quán)限。