MySQL 安全性知识要点
添加、刪除用戶
1.添加用戶
可以使用CREAT USER語法添加一個或多個用戶,并設置相應的密碼。
語法格式:
CREAT USER user [IDENTIFIED BY ?[PASSWORD] ?'password']
[,user [IDENTIFIED BY ?[PASSWORD] ?'password'] ] ...
其中,user的格式為:
‘user_name’@ 'host name'
注:user_name為用戶名,host_name為主機名,password為該用戶的密碼。
使用自選的IDENTIFIED BY 子句,可以為賬戶給定一個密碼。特別是要在純文本中指定密碼,需忽略PASSWORD關鍵詞。如果不想以明文發(fā)送密碼,而且知道PASSWORD()函數(shù)返回給密碼的混編制,則可以指定該混編值,則可以制定該混編值,但要加關鍵字PASSWORD。
CREAT USER用于創(chuàng)建新的MySQL賬戶。CREAT USER會在系統(tǒng)本身的mysql數(shù)據(jù)庫的user表中添加一個新記錄。要是用CREAT USER,必須擁有mysql數(shù)據(jù)庫的CREAT USER權限或INSERT權限。如果賬戶已經(jīng)存在,則出現(xiàn)錯誤。
?例:添加兩個新的用戶,king的密碼為queen,cong的密碼為707013
create user
'king' @ 'localhost' identified by 'queen',
'cong' @??'localhost' identified by '707013';
完成后可以切換到mysql數(shù)據(jù)庫,從user表中查到剛剛添加的兩個用戶記錄:
use mysql
show tables;
select * from user
注:在用戶名后面聲明了關鍵字localhost。這個關鍵字指定用戶創(chuàng)建的使用MySQL的連接所來自的主機。如果一個用戶名和主機名中包含特殊符號如“_”,或通配符如“%”,則需要用單引號將其括起。“%”表示一組主機。
如果兩個用戶具有相同的用戶名但主機不同,MySQL將其視為不同的用戶,允許為這兩個用戶分配不同的權限集合。
如果沒輸入密碼,那么MySQL允許相關的用戶不使用密碼登錄。但是從安全的角度并不推薦這種做法。
2.刪除用戶
?語法格式:
DROP USER ?user [, user_name]......
DROP USER ?語句用于刪除一個或多個MySQL賬戶,并取消其權限。要使用DROP USER ,必須擁有mysql數(shù)據(jù)庫的全局CREATE USER權限或DELETE權限。
例:刪除用戶 palo
drop user Palo@localhost;
刪除后可以用上面介紹的方法查看一下效果。如果被刪的用戶已經(jīng)創(chuàng)建了表,索引或其他數(shù)據(jù)庫對象,它們將繼續(xù)保留,因為MySQL并沒有記錄是由誰創(chuàng)建了這些對象。
修改用戶名、密碼
1.修改用戶名
可以使用RENAME USER語句來修改一個已經(jīng)存在的SQL用戶的名字。
語法格式:
RENANE USER old_user TO new_user,
[, old_user TO new_user]...
注:old_user為已經(jīng)存在過的SQL用戶,new_user為新的SQL用戶。
RENAME USER語句用于對原有MySQL賬戶進行重新命名。要使用RENAME USER,必須擁有全局CREATE USER權限或mysql數(shù)據(jù)庫UPDATE權限。如果舊賬戶不存在或者新賬戶已經(jīng)存在,則會出現(xiàn)錯誤。
例:將用戶king的名字修改為ken
rename user
‘king’ @ ‘loacalhost’ to 'ken' @ ‘loacalhost’;
完成后可以用上面的方法查看一下是否修改成功。
2.修改密碼
要修改某個用戶的登錄密碼,可以使用SET PASSWORD語句。
語法格式:
SET PASSWORD ?[FOR user]=PASSWORD ('newpassword')
注:如果不加FOR user,表示修改當前用戶的密碼。加了FOR user則是修改當前主機上的特定用戶的密碼,user為用戶名,它的值必須以'user_name' @'host_name'的格式給定。
例:將用戶ken的密碼改為qen
set password for ‘ken’ @ ‘localhost’ =password(‘qen’);
權限控制
1.授予權限
新的SQL用戶不允許訪問其他SQL用戶的表,也不能立即創(chuàng)建自己的表,它必須被授權??梢员皇谟璧臋嘞抻幸韵聨捉M。
(1)列權限:和表中的一個具體列相關。
(2)表權限:和一個具體表中的數(shù)據(jù)有關。
(3)數(shù)據(jù)庫權限:和一個具體的數(shù)據(jù)庫中的所有表相關。
(4)用戶權限:和MySQL所有的數(shù)據(jù)庫相關。
給某用戶授予權限可以使用GRANT語句。使用SHOW GRANTS語句可以查看當前賬戶擁有什么權限。
GRANT 語法格式:
GRANT priv_type ?[(column_list)] ?[,?priv_type ?[(column_list)] ]...
ON [obect_type] {tbl_name | ?* ?| ? * . * ?| ?db_name.*}
TO user [IDENTIFIED BY [PASSWORD] ?'password' ]
[,user [IDENTIFIED BY [PASSWORD] ?'password' ]? ]...
[WITH with_option [with_option] ...]
其中,object_type:
TABLE
| ?FUNCTION
| ?PROCEDURE
with_option:
GRANT ?OPTION
| ? MAX_QUERIES_PRE_HOUR ?count
| ? MAX_UPDATES_PRE_HOUR ?count
| ? MAX_CONNECTIONS_PRE_HOUR ?count
| ? MAX_USER_CONNECTIONS ?count
注:?priv_type為權限的名稱,如 SELECT,UPDATE等,給不同的對象授予權限?priv_type的值也不同。TO子句用來設定用戶的密碼。ON字關鍵字后面給出的是要授予權限的數(shù)據(jù)庫或表名。
SELECT:給予用戶使用SELECT語句訪問特定的表的權力。用戶也可以在一個視圖公式中包含表。然而,用戶必須對視圖公式中的每個表或視圖都有SELECT權限。
INSERT:給予用戶使用INSERT語句向一個特定表中添加行的權力。
DELETE:給予用戶使用DELETE語句向一個特定表中刪除行的權力。
UPDATE:給予用戶使用UPDATE語句修改特定表中值的權力。
REFERENCES:給予用戶使用創(chuàng)建一個外鍵來參照特定的表的權力。
CREATE:給予用戶使用特定名字創(chuàng)建一個表的權力。
ALTER:給予用戶使用ALTER TABLE語句修改表的權力。
INDEX:給予用戶使用在表上定義索引的權力。
DROP:給予用戶刪除表的權力。
ALL或ALL PRIVILEGES:表示所有權限名。
在授予表權限時,ON關鍵字后面跟上tb1_name ,tb1_name為表名或視圖名。
?
轉載于:https://www.cnblogs.com/215cwzx/p/8024627.html
總結
以上是生活随笔為你收集整理的MySQL 安全性知识要点的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 好听的数字网名117个
 - 下一篇: 失恋后的网名男生网名100个