資料庫授權語句
下面的例子顯示如敏稿何使用MySQL客戶安裝新用戶 這些例子假定許可權已預設被安裝 這意味著為了改變 你必須在MySQL正在運行同一台機器上 你必須作為MySQL root用戶連接 並且root用戶必須對MySQL資料庫有insert許可權和reload管理許可權 另外 如果你改變了root用戶口令 你必須如下的MySQL命令指定它
你可以通過發出GRANT語句增加新用戶
shell> mysql user=root mysql mysql> GRANT ALL PRIVILEGES ON * * TO monty@localhost IDENTIFIED BY something WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON * * TO monty@ % IDENTIFIED BY something WITH GRANT OPTION; mysql> GRANT RELOAD PROCESS ON * * TO admin@localhost; mysql> GRANT USAGE ON * * TO mmy@localhost;
這些GRANT語句安裝 個新用戶
monty 可以從任何地方連接伺服器的一個完全的超級用戶 但是必須使用一個口令( something 做這個 注意 我們必須對 monty@localhost和monty@ % 發出GRANT語句 如果我們增加localhost條目 對localhost的匿名用戶條目在我 們從本地主機連接接時由mysql_install_db創建的條目將優先考慮 因為它有更特定的Host欄位值 所以以user表排列順序看更早到來
admin 可以從localhost沒有一個口令進行連接並且被授予reload和process管理許可權的用戶 這允許用戶執行mysqladmin reload mysqladmin refresh和mysqladmin flush *命令 還有mysqladmin processlist 沒有授予資料庫有關的許可權 他們能在以後通過發出另一個GRANT語句授權
mmy 可以不用一個口令連接的一個用戶 但是只能從本地主機 全局許可權被設置為 N USAGE許可權類型允許你無需許可權就可設置一個用戶 它假定你將在以後授予資料庫相關的許可權
鏈拿猛你也可以直接通過發出INSERT語句增加同樣的用戶存取信息 然後告訴服務棚橋器再次裝入授權表
shell> mysql user=root mysql mysql> INSERT INTO user VALUES( localhost monty PASSWORD( something ) Y Y Y Y Y Y Y Y Y Y Y Y Y Y ) mysql> INSERT INTO user VALUES( % monty PASSWORD( something ) Y Y Y Y Y Y Y Y Y Y Y Y Y Y ) mysql> INSERT INTO user SET Host= localhost User= admin Reload_priv= Y Process_priv= Y ; mysql> INSERT INTO user (Host User Password) VALUES( localhost mmy ); mysql> FLUSH PRIVILEGES;
取決於你的MySQL版本 對上述 你可能必須使用一個不同數目 Y 值(在 以前的版本有更少的許可權列) 對admin用戶 只用在 開始的版本具有的更加可讀的INSERT擴充的語法
注意 為了設置一個超級用戶 你只需創造一個user表條目 其許可權欄位設為 Y 不需要db或host表的條目
在user表中的許可權列不是由最後一個INSERT語句明確設置的(對mmy用戶) 因此那些列被賦予預設值 N 這是GRANT USAGE做的同樣的事情
下列例子增加一個用戶custom 他能從主機localhost server domain和whitehouse gov連接 他只想要從 localhost存取bankaccount資料庫 從whitehouse gov存取expenses資料庫和從所有 台主機存取customer 資料庫 他想要從所有 台主機上使用口令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 ;
通過直接修改授權表設置用戶許可權 運行這些命令(注意 在結束時FLUSH PRIVILEGES)
lishixin/Article/program/MySQL/201311/29628
㈡ 資料庫SQL語言怎麼授權
SQL語言用GRANT語句向用戶授予操作許可權,GRANT語句的一般格式為:
GRANT <許可權>[,<許可權>]...
[ON <對象類型> <對象名>]
TO <用戶>[,<用戶>]...
[WITH GRANT OPTION];
其語義為:將對指定操作對象的指定操作許可權授予指定的用戶。
不同類型的操作對象有不同的操作許可權,常見的操作許可權如表3-4所示。
表3-4 不同對象類型允許的操作許可權
對象 對象類型 操作許可權
屬性列 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES
視圖 TABLE SELECT, INSERT, UPDATE, DELETE ALL PRIVIEGES
基本表 TABLE SELECT, INSERT, UPDATE, ALTER, INDEX,DELETE ALL PRIVIEGES
資料庫 DATABASE CREATETAB
詳細信息…
接受許可權的用戶可以是一個或多個具體用戶,也可以是PUBLIC即全體用戶。
如果指定了WITH GRANT OPTION子句,則獲得某種許可權的用戶還可以把這種許可權再授予別的用戶。如果沒有指定WITH GRANT OPTION子句,則獲得某種許可權的用戶只能使用該許可權,但不能傳播該許可權。
例1
把查詢Student表許可權授給用戶U1
GRANT SELECT ON TABLE Student TO U1;
例2
把對Student表和Course表的全部許可權授予用戶U2和U3
GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;
例3
把對表SC的查詢許可權授予所有用戶
GRANT SELECT ON TABLE SC TO PUBLIC;
例4
把查詢Student表和修改學生學號的許可權授給用戶U4
詳細信息…
這里實際上要授予U4用戶的是對基本表Student的SELECT許可權和對屬性列Sno的UPDATE許可權。授予關於屬性列的許可權時必須明確指出相應屬性列名。完成本授權操作的SQL語句為:
GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;
例5
把對表SC的INSERT許可權授予U5用戶,並允許他再將此許可權授予其他用戶
GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION;
詳細信息…
執行此SQL語句後,U5不僅擁有了對表SC的INSERT許可權,還可以傳播此許可權,即由U5用戶發上述GRANT命令給其他用戶。
例如U5可以將此許可權授予U6:
GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION;
同樣,U6還可以將此許可權授予U7:
GRANT INSERT ON TABLE SC TO U7;
因為U6未給U7傳播的許可權,因此U7不能再傳播此許可權。
例6
DBA把在資料庫S_C中建立表的許可權授予用戶U8
GRANT CREATETAB ON DATABASE S_C TO U8;
㈢ 怎麼給oracle資料庫創建用戶,並賦許可權
開始,運行輸入cmd或是wind+r輸入cmd
使用dba登錄。
先創建一個用戶:使用命令:create
user
用戶名
identified
by
密碼
給該用戶解鎖:使用命令:用戶解鎖
alter
user
用戶名
account
unlock(不解鎖無法登陸)
給該用戶授權:grant
create
session
to
用戶名。這里是給的登錄許可權。如果想把dba的許可權授權給該用戶。
㈣ 如何給MySql創建連接用戶並授權
一般在為MySql創建用戶時建議使用GRANT前台命令,當然如果對我們開發者而言,方法還有很多種,比如使用INSERT命令,甚至是直接修改mysql user數據表,但仍然建議按照MySQL規范去授權賬戶。因為它太容易忘記,特別整理方便參考。
1、登錄MySQL
輸入mysql -u root和密碼即可登錄到Mysql。
2、選擇資料庫
語句如下:use mysql;
3、在mysql的user表中增加連接用戶
GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
其中:
「username」替換為將要授權的用戶名,比如clientusr;
「password」替換為clientusr設置的密碼;
4、可訪問數據表授權
創建好帳戶之後,就開始給上面的common user進行數據表授權,步驟3中增加的連接用戶默認許可權都是「N」的,必須在db表中為該帳戶授權,允許其訪問專用資料庫,當然超級用戶就不說了。
使用下面語句:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON dbx.* TO 'username'@'localhost' IDENTIFIED BY 'password';
本語句中的許可權根據實際需要確定:
"dbx"替換為授權訪問的資料庫名,如果只給某張表授權:dbx.tablename
"username"是步驟2授權用戶名
"password"是步驟2授權用戶的設置密碼
這樣就為該用戶授予了對某數據表的SELECT, INSERT, UPDATE, DELETE, CAREATE, DROP許可權。
5、生效授權,創建完畢
FLUSH PRIVILEGES;
備註:
1、不要直接使用INSERT語句添加user記錄,使用INSERT可能出現:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value錯誤。不過早期的MYSQL版本筆者倒沒出現這個錯誤,因為天緣一直都是直接修改user表或直接使用INSERT語句完成,後來升級MYSQL到5.1的時候,發現可能會出現這個錯誤。
2、上文3和4,也可使用一句話GRANT ALL ON tbx.* TO 'username' IDENTIFIED BY 'password',這句話會自動創建username並為之授權。更多授權許可權可參考MYSQL官方網站。