系統管理賬戶登錄系統會大大降低系統的安全性,所以為了更安全的使用電腦,通常我們都會創建一個新的用戶來登錄系統,MySQL也不例外。MySQL中創建用戶與授權的實現方法,對於剛開始接觸mysql的朋友可以參考下! 創建 Mysql創建用戶的方法分成三種:INSERTUSER表的方法、CREATEUS ...
系統管理賬戶登錄系統會大大降低系統的安全性,所以為了更安全的使用電腦,通常我們都會創建一個新的用戶來登錄系統,MySQL也不例外。MySQL中創建用戶與授權的實現方法,對於剛開始接觸mysql的朋友可以參考下!
創建
Mysql創建用戶的方法分成三種:INSERTUSER表的方法、CREATEUSER的方法、GRANT的方法。
一、賬號名稱的構成方式
賬號的組成方式:用戶名+主機(所以可以出現重覆的用戶名,跟其他的資料庫不一樣)
用戶名:16字元以內.
主機名:可以用主機名和IP地址,也可以用通配符
通配符說明:172.18.10.%(IP地址為172.18.10段的所有IP地址都可以訪問)
二、通過CREATEUSER命令進行創建用戶
腳本:CREATEUSER'username'@'host'[IDENTIFIEDBY'PASSword']其中密碼是可選項;
說明:該方法創建出來的用戶只有連接資料庫的許可權,需要後續繼續授權;
三、通過GRANT命令創建用戶
個人習慣一般用這種方法進行創建用戶,當資料庫存在用戶的時候GRANT會對用戶進行授權,但當資料庫不存在該用戶的時候,就會創建相應的用戶併進行授權。(說明上面那步是多餘的)
腳本:
說明:priv代表許可權select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個許可權
例子:mysql>grantselect,insert,update,delete,create,[email protected]'123';
說明:給主機為192.168.10.1的用戶john分配可對資料庫test的hr表進行select,insert,update,delete,create,drop等操作的許可權,並設定口令為123。
mysql>grantallprivilegesontest.*[email protected]'123';
說明:給主機為192.168.10.1的用戶john分配可對資料庫test所有表進行所有操作的許可權,並設定口令為123。
mysql>grantallprivilegeson*.*[email protected]'123';
說明:給主機為192.168.10.1的用戶john分配可對所有資料庫的所有表進行所有操作的許可權,並設定口令為123。
mysql>grantallprivilegeson*.*tojohn@localhostidentifiedby'123';
說明:用戶john分配可對所有資料庫的所有表進行所有操作的許可權,並設定口令為123。
四、直接向mysql.user表插入記錄(該方法個人很少用)
因為資料庫的用戶信息都是保存在mysql.user這張表的,所以直接對該表進行插入語句,即可完成用戶的創建;
mysql>insertintouser(host,user,password)values('%','john',password('123'));
查看許可權:
showgrantsfor你的用戶;
showgrantsforroot@'localhost';
showcreatedatabasedbname;這個可以看到創建資料庫時用到的一些參數。
showcreatetabletickets;可以看到創建表時用到的一些參數
撤銷許可權:
revokeallon*.*fromdba@localhost;
五、完成用戶的創建後,請記得刷新系統許可權表;
mysql>flushprivileges;
雖然創建用戶的方法有三種,個人還是傾向於第二種方法,一步到位,簡單明瞭;其他的兩種方法只是有助於理解資料庫的原理而已;
授權:
命令:GRANTprivilegesONdatabasename.tablenameTO'username'@'host'
說明:privileges-用戶的操作許可權,如SELECT,INSERT,UPDATE等(詳細列表見該文最後面).如果要授予所的許可權則使用ALL.;databasename-資料庫名,tablename-表名,如果要授予該用戶對所有資料庫和表的相應操作許可權則可用*表示,如*.*.
例子:GRANTSELECT,INSERTONtest.userTO'pig'@'%';
GRANTALLON*.*TO'pig'@'%';
註意:用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令:
GRANTprivilegesONdatabasename.tablenameTO'username'@'host'WITHGRANTOPTION;