安裝mycheckpoint的時候,給這個監控使用者分許可權的時候,發現了這個秘密:
複製代碼 代碼如下:mysql>
mysql> GRANT ALL PRIVILEGES ON mycheckpoint.* TO 'mycheckpoint_user'@'localhost' IDENTIFIED BY '123456';
ERROR 1470 (HY000): String 'mycheckpoint_user' is too long for user name (should be no longer than 16)
mysql>
grant命令是對mysql資料庫進行使用者建立,許可權或其他參數控制的強大的命令,官網上介紹它就有幾大頁,要用精它恐怕不是一日半早的事情,權宜根據心得慢慢領會吧!
grant命令的簡單介紹是這樣的:
The GRANT statement enables system administrators to grant privileges to MySQL user accounts. GRANT also serves to specify other account characteristics such as use of secure connections and limits on access to server resources. To use GRANT, you must have the GRANT OPTION privilege, and you must have the privileges that you are granting.
這段話的意思是說:grant命令允許系統管理員對mysql 使用者帳號(user account)授予各類許可權(grant privileges),grant當然也可以用於設定帳號的其他特徵如安全連線和服務資料訪問限制等,為使用grant命令,必須有GRANT OPTION 許可權,同是你必須有你要授予許可權的許可權!
使用show grant命令 SHOW GRANTS [FOR user]
該命令的解釋是:This statement lists the GRANT statement or statements that must be issued to duplicate the privileges that are granted to a MySQL user account.
如果要需要目前使用者的許可權,可以使用這下三條命令之一:
SHOW GRANTS;SHOW GRANTS FOR CURRENT_USER;SHOW GRANTS FOR CURRENT_USER();在本機上運行命令的效果(當用使用的root使用者串連到mysql)使用grant命令前,需要搞清楚以下資訊:grant 的類型,即你要授予什麼許可權(privilege type),是允許查詢?插入行?建立?還是其他等等。grant 的物件類型(priv_type),有三種:TABLE、 FUNCTION、PROCEDURE,還有一種是預設的,就是DATABASE資料庫。grant 的對象(priv_level):是作用於所有資料庫呢?還是作用於某一資料庫,是作用於資料庫的所有表,還是某一個單一的表,甚至是表中的某些列!可以這樣做個想象,使用者就是一個城管執法者:他有那些許可權(privilege type),驅趕走鬼?沒收走鬼的東西?他管理那類(priv_type)走鬼呢?賣水果的?烘烤的還是賣鈽口的?他管理的範圍是什麼:整個區?某條街道?最後,不同的許可權會能或不能作用於不同的物件類型和範圍,以下是部分,具體可能參考:
dev.mysql.com/doc/refman/5.1/en/privileges-provided.html
以下是某些許可權的解數,詳細在dev.mysql.com/doc/refman/5.1/en/grant.html