標籤:預存程序 配置 for inno aec 關注 ati oat pass
MySQL賬戶管理
這些天一直都渾渾噩噩的,折騰MySQLInnoDB資料引擎的熱備份,折騰了很久,結果也沒有折騰出來,心裡有很多的挫敗感。繼而在主從(master replication to slave)配置上學習了下,學習的過程中踩到了不少的坑,最後還成功的完成了主從的配置。學習完主從之後,繼續折騰熱備份的東西,自己的電腦也不爭氣,虛擬機器經常掉線。可能這一段時間並不適合學習熱備份,於是乎轉向MySQL賬戶管理,這一塊的內容,在以前的工作學習生涯中經常用到,也去問過DBA大叔幫我配置許可權。還記得那個DBA大叔,其實年齡並不是很大,一看就是脾氣很好的那種。工作區擺放了三個顯示器,顯示器上全是不斷變化的管理資訊,頓時覺得很厲害也很佩服。那個時候我引以為傲的是在工作中,使用預存程序取資料,然後使用程式去調用,使用很長的SQL命令將複雜的業務需求封裝解決。當時平台的訪問量太小,效率再差的SQL不會被發現。再說沒有人關注過代碼的執行效率,沒有人關心過sql得執行效率。只要上了線,運行ok我們就放心了。那個時候我還是初級程式員,以為所有的複雜邏輯,都可以通過if else 去解決,沒有遇到過大並發,沒有遇到過大資料。進入目前的這家公司後,開始有意的學習這方面的內容,也逐漸了明白瞭解決大資料和高並發的解決方案。因為近一周沒有寫過部落格,話題跑的有點遠,接下來我們來看下MySQL的賬戶管理該怎麼操作。
一、MySQL賬戶體系
根據賬戶所具有的許可權的不同,MySQL的賬戶可以分為以下幾種:
服務執行個體級帳號
如果某使用者如root,擁有服務執行個體級分配的許可權,那麼該帳號就可以刪除所有的資料庫、連同這些庫中的表。
資料庫層級帳號
該帳號可以在具有許可權的資料庫中執行增刪改查的所有操作(如果分配了這些許可權)。
資料表層級帳號
該帳號可以在具有許可權的表上執行增刪改查等所有操作(如果分配了這些許可權)。
欄位層級的許可權
該帳號可以對某些表中具有許可權的欄位進行操作(取決於所分配的許可權)。
儲存程式層級的帳號
該帳號可以對儲存程式進行增刪改查的操作(取決於所分配的許可權)
二、配置許可權
grant 命令文法格式
grant 許可權名稱[欄位列表] on [資料庫資源類型]資料庫資源 to MySQL賬戶1,[MySQL賬戶2] [with grant option]
*.* 表示所有資料庫,所有資料表
‘account_4‘@‘%‘ 表示account_4 帳號可以在任意的主機上進行登入。
建立服務執行個體級帳號
grant all privileges on *.* to ‘account_4‘@‘%‘ identified by ‘123456‘ with grant option;將建立一個名字為account_4的帳號,擁有所有的資料庫許可權,並且具有grant 許可權,可以建立其他擁有服務執行個體許可權的其他使用者。
建立資料庫執行個體帳號
grant all privileges on liangzi.* to ‘account_5‘@‘%‘ identified by ‘123456‘ with grant option;將建立一個名字為account_5的帳號。擁有liangzi 資料庫的所有許可權,可以隨該庫中的表進行所有操作。
建立資料表層級的帳號
grant all privileges on table liangzi.test_1 to ‘account_6‘@‘%‘ identified by ‘123456‘;將建立一個名字為account_6 的使用者,對langzi資料庫中test_1擁有所有的許可權。
由於欄位層級的許可權並不經常使用,所以不必列舉。欄位設定國語冗餘複雜,則每次MySQL在進行SQL執行的時候回進行同樣複雜的許可權判斷,造成效率降低效能下降,同事也會存在安全隱患。因此簡單、易管理的、高可用的許可權才是可取的。
許可權的增刪改查
1.增許可權
比如原本的許可權為:grant select,insert on liangzi.* to ‘account_5‘@‘%‘ identified by ‘123456‘ with grant option;想要增加update, delete,alter 許可權可以如下操作:grant update,delete,alter on liangzi.* to ‘account_5‘@‘%‘ identified by ‘123456‘ with grant option;然後使用show privileges for account_5;mysql> show grants for account_5;+-------------------------------------------------------------------------------------------------+| Grants for [email protected]% |+-------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO ‘account_5‘@‘%‘ || GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON `liangzi`.* TO ‘account_5‘@‘%‘ WITH GRANT OPTION |+-------------------------------------------------------------------------------------------------+
2、移除許可權
比如原本的許可權為:grant select,insert on liangzi.* to ‘account_6‘@‘%‘ identified by ‘123456‘ with grant option;想要移除insert 許可權:mysql> revoke insert on liangzi.* from ‘account_6‘@‘%‘;mysql> show grants for account_6;+------------------------------------------------------------------+| Grants for [email protected]% |+------------------------------------------------------------------+| GRANT USAGE ON *.* TO ‘account_6‘@‘%‘ || GRANT SELECT ON `liangzi`.* TO ‘account_6‘@‘%‘ WITH GRANT OPTION |+------------------------------------------------------------------+
三、使用者管理
使用者管理也無非是增加使用者、刪除使用者之類的。還記得在裝mysql第一次使用的時候,使用了預設密碼,進了系統之後無論進行什麼操作都需要我設定密碼。但是如何設定,提示資訊上並沒有寫。後來才知道了可以使用:
set password=password(‘123456‘);
其實這個命令不僅能夠設定目前使用者的密碼,也可以設定其他使用者的密碼,這個命令的完整格式是:
set password [for USER] = passowrd(‘新密碼‘);
比如公司裡一個同事離職了,我需要刪除他的mysql許可權,可以使用如下的命令:
drop user USER_NAME;drop user roverliang;
增加使用者可以使用:
create user ‘roverliang‘@‘%‘ identified by ‘123456‘;添加的格式為:create user ‘USER_NAME‘@‘HOST‘ identified by ‘PASSOWRD‘;其實這個命令相當複雜,由這個命令建立出來的使用者不具有任何許可權,僅僅能夠登入系統。因此建立使用者的時候,可以使用grant 命令,加使用者加許可權一步到位。
MySQL賬戶管理