GRANT ALL ON *.* TO anyname@localhost IDENTIFIED BY "passwd" WITH GRANT OPTION 該語句將在user表中為anyname@localhost創(chuàng)建一個記錄,打開所有權限,因為這里是超級用戶(全局)權限存儲的地方,要用INSERT語句做同樣的事情,語句是:
INSERT INTO user VALUES("localhost","anyname",PASSWORD("passwd"), "Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y") 你可能發(fā)現(xiàn)它不工作,這要看你的MySQL版本。授權表的結構已經(jīng)改變而且你在你的user表可能沒有14個權限列。用SHOW COLUMNS找出你的授權表包含的每個權限列,相應地調整你的INSERT語句。 下列GRANT語句也創(chuàng)建一個擁有超級用戶身份的用戶,但是只有一個單個的權限:
GRANT RELOAD ON *.* TO flush@localhost IDENTIFIED BY "flushpass" 本例的INSERT語句比前一個簡單,它很容易列出列名并只指定一個權限列。所有其它列將設置為缺省的"N":
INSERT INTO user (Host,Password,Reload) VALUES("localhost","flush",PASSWORD("flushpass"),"Y") 數(shù)據(jù)庫級權限用一個ON db_name.*子句而不是ON *.*進行授權:
GRANT ALL ON sample.* TO boris@localhost IDENTIFIED BY "ruby" 這些權限不是全局的,所以它們不存儲在user表中,我們仍然需要在user表中創(chuàng)建一條記錄(使得用戶能連接),但我們也需要創(chuàng)建一個db表記錄記錄數(shù)據(jù)庫集權限:
INSERT INTO user (Host,User,Password) VALUES("localhost","boris",PASSWORD("ruby"))
INSERT INTO db VALUES("localhost","sample_db","boris","Y","Y","Y","Y","Y","Y","N","Y","Y","Y")
"N"列是為GRANT權限;對末尾的一個數(shù)據(jù)庫級具有WITH GRANT OPTION的GRANT語句,你要設置該列為"Y"。