mysql 数据库授权(给某个用户授权某个数据库)
先設置該用戶只有show?database權限
grant?select,insert,update,delete?on?redmine1.*?to?jira@"%"?identified?by?"jira";
?
授權命令GRANT?語句的語法如下:
GRANT?privileges?(columns)
ON?what
TO?user?IDENTIFIEDBY?"password"
WITH?GRANT?OPTION
對用戶授權
mysql>grant?rights?on?database.*?to?user@host?identified?by?"pass";
例1:
增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。
grant?select,insert,update,delete?on?*.*?to?test1@"%"?Identified?by?"abc";
ON?子句中*.*?說明符的意思是“所有數據庫,所有的表”
例2:
增加一個用戶test2密碼為abc,?讓他只可以在localhost上登錄,并可以對數據庫mydb進行查詢、插入、修改、刪除的操作。
grant?select,insert,update,delete?on?mydb.*?to?test2@localhost?identified?by?"abc";
例子3
增加一個用戶custom,他能從主機localhost、server.domain和whitehouse.gov連接。他只想要從?localhost存取bankaccount數據庫,從whitehouse.gov存取expenses數據庫和從所有3臺主機存取customer?數據庫。他想要從所有3臺主機上使用口令stupid。
為了使用GRANT語句設置個用戶的權限,運行這些命令:
shell>?mysql?--user=root?mysql
mysql>?GRANT?SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON?bankaccount.*?TO?custom@localhost?IDENTIFIED?BY?'stupid';
mysql>?GRANT?SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON?expenses.*?TO?custom@whitehouse.gov?IDENTIFIED?BY?'stupid';
mysql>?GRANT?SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON?customer.*?TO?custom@'%'?IDENTIFIED?BY?'stupid';
==============================================
權限信息用user、db、host、tables_priv和columns_priv表被存儲在mysql數據庫中(即在名為mysql的數據庫中)。
權限?列?Context
select?Select_priv?表
insert?Insert_priv?表
update?Update_priv?表
delete?Delete_priv?表
index?Index_priv?表
alter?Alter_priv?表
create?Create_priv?數據庫、表或索引
drop?Drop_priv?數據庫或表
grant?Grant_priv?數據庫或表
references?References_priv?數據庫或表
reload?Reload_priv?服務器管理
shutdown?Shutdown_priv?服務器管理
process?Process_priv?服務器管理
file?File_priv?在服務器上的文件存取
?
1.select、insert、update和delete權限?允許你在一個數據庫現有的表上實施操作,是基本權限
2.alter權限允許你使用ALTER?TABLE
3.create和drop權限允許你創建新的數據庫和表,或拋棄(刪除)現存的數據庫和表?如果你將mysql數據庫的drop權限授予一個用戶,該用戶能拋棄存儲了MySQL存取權限的數據庫!
4.grant權限允許你把你自己擁有的那些權限授給其他的用戶。
你不能明顯地指定一個給定用戶應該被拒絕存取。即,你不能明顯地匹配一個用戶并且然后拒絕連接。你不能指定一個用戶有權創建立或拋棄一個數據庫中的表,也不能創建或拋棄數據庫本身。?可以同時列出許多被授予的單個權限。
例如,如果想讓用戶能讀取和修改已有表的內容,但又不允許創建新表或刪除表,可按如下授權:
GRANT?SELECT,INSERT,DELETE,UPDATE?ON?samp_db.*?TO?'user'@'%'?IDENTIFIEDBY?"pass"
?
以上是我從別的地方拷貝過來后稍作修改的文字,下面自己寫一些需要注意的東西。
為什么使用了Grant?all?on?db.*?to?user?identified?by?"pass"后,在主機上訪問數據庫還會出現ERROR?1045?(28000):?Access?denied?for?user?'user'@'localhost'?(using?password:?YES)?的錯誤提示?
解答方法如下:運行命令?Grant?all?on?db.*?to?'user'@'localhost'?identified?by?"pass"
原因是:當不加@選項時,效果與加@'%'是一樣的,'%'從名義上包括任何主機,(%必須加上引號,不然與@放在一起可能不會被辨認出。)不過有些時候(有些版本)'%'不包括localhost,要單獨對@'localhost'進行賦值
?
轉載于:https://blog.51cto.com/lucifer119/1232558
總結
以上是生活随笔為你收集整理的mysql 数据库授权(给某个用户授权某个数据库)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到下雨发大水是什么意思女人
- 下一篇: 本命年梦到自己怀孕了是什么意思