MySQL與Oracle 差異比較之七使用者權限,mysqloracle
使用者權限
編號 |
類別 |
ORACLE |
MYSQL |
注釋 |
1 |
建立使用者 |
Create user user_name identified by user_password default tablespace starSpace temporary tablespace temp; |
CREATE USER user_name IDENTIFIED BY user_password; |
1.oracle建立使用者 Oracle 的預設使用者有三個: sys / system / scott. 其中sys和system 是系統使用者,擁有dba許可權, scott使用者是Oracle資料庫的一個示範賬戶, 在資料庫安裝時建立, 不具備dba許可權. 建立使用者命令: Create user user_name identified by user_password [default tablespace tableSpace] [temporary tablespace tableSpace}; 說明: 每個使用者都有一個預設資料表空間和一個暫存資料表空間,如果沒有指定,oracle就將system設定為預設資料表空間,將temp設為暫存資料表空間. 2.mysql建立使用者 建立使用者命令: mysql> CREATE USER yy IDENTIFIED BY '123'; yy表示你要建立的使用者名稱,後面的123表示密碼 上面建立的使用者可以在任何地方登陸。 如果要限制在固定地址登陸,比如localhost 登陸: mysql> CREATE USER yy@localhost IDENTIFIED BY '123'; |
2 |
刪除使用者 |
Drop user user_name cascade; |
Drop user user_name; |
1. Oracle SQL>drop user 使用者名稱; //使用者沒有建任何實體 SQL> drop user 使用者名稱 CASCADE; // 將使用者及其所建實體全部刪除 注: 當前正串連的使用者不得刪除。 2. Mysql 自4.1.1以後,刪除一個MYSQL帳戶,可以使用drop user 語句了。 不過在5.0.2之前的版本中,drop user語句只能刪除沒有任何許可權的使用者。 從5.0.2往後的版本中,drop user語句可以刪除任何使用者。(當然不能自己刪自己)。樣本:drop user "garfield"@"localhost"。別忘了加後面的@,不然會報錯。 在4.1.1與5.0.2之間的版本中要刪除一個MYSQL帳戶,需要進行以下操作。 1) 使用show grants語句查看要刪除的MYSQL帳戶都有哪些許可權,使用方法如show grants for "garfield"@"localhost"。 2) 使用revoke語句收回使用者在show grants裡擁有的許可權。執行這個語句將刪除除user表之外的其它所有許可權表中的相關記錄,並且收回在user表中該使用者擁有的全域許可權。 3) 使用drop user 語句把使用者從user表中刪除。 |
3 |
修改密碼 |
alter user user_name identified by new_password |
mysqladmin -u root -p 123456 password "your password"; |
1.mysql修改密碼 第一種方式: 1) 更改之前root沒有密碼的情況 c:\mysql\bin>mysqladmin -u root password "your password" 2) 更改之前root有密碼的情況,假如為123456 c:\mysql\bin>mysqladmin -u root -p123456 password "your password" 注意:更改的密碼不能用單引號,可用雙引號或不用引號 第二種方式: 1) c:\mysql\bin>mysql -uroot -p密碼 以root身份登入 2) mysql>use mysql 選擇資料庫 3) mysql>update user set password=password('你的密碼') where User='root'; 4) mysqlflush privileges; 重新載入許可權表 |
4 |
設定使用者權限 |
Grant connect to star -- star角色允許使用者串連資料庫, 並建立資料庫物件 Grant resource to star -- star角色允許使用者使用資料庫中的儲存空間. Grant dba to star -- DBA許可權 |
GRANT ALL ON picture.* TO test IDENTIFIED BY "test"; |
1. 詳見<<oracle vs mysql 使用者權限.doc>> 2.1 Oracle 使用權限設定 2. 詳見<<oracle vs mysql 使用者權限.doc>> 1.4 使用者權限設定 |
5 |
回收許可權 |
Revoke select, update on product from user02; |
REVOKE privileges (columns) ON what FROM user |
1. Oracle Revoke語句的基本格式如下: REVOKE 權限類別型 [(欄位列表)] [, 權限類別型 [(欄位列表)]…]ON {資料庫名稱.表名稱}FROM 使用者名稱@網域名稱或IP地址 例如,管理員撤銷使用者admin@localhost對資料庫xsxk所擁有的建立、建立資料庫及表的許可權,並撤銷該使用者可以把自己所擁有的許可權授予其他使用者的許可權,可使用以下命令。 mysql>revoke create,drop on xsxk.* from admin@localhost; mysql>revoke grant option on xsxk.* from admin@localhost; revoke語句中的“使用者名稱@網域名稱或IP地址”部分必須匹配原來grant語句中的“使用者名稱@網域名稱或IP地址”部分,而“權限類別型”部分可以是所授權的一部分許可權。而且,revoke只能撤銷許可權,不能刪除使用者賬戶,在授權表user中仍保留該使用者的記錄;使用者仍可以串連到資料庫伺服器。如果要完全刪除使用者,則使用前面提到的delete語句從user表中刪除該使用者記錄。 2. Mysql 要取消一個使用者的許可權,使用REVOKE語句。REVOKE的文法非常類似於GRANT語句,除了TO用FROM取代並且沒有INDETIFED BY和WITH GRANT OPTION子句: REVOKE privileges (columns) ON what FROM user user部分必須匹配原來GRANT語句的你想撤權的使用者的user部分。privileges部分不需匹配,你可以用GRANT語句授權,然後用REVOKE語句只撤銷部分許可權。 REVOKE語句只刪除許可權,而不刪除使用者。即使你撤銷了所有許可權,在user表中的使用者記錄依然保留,這意味著使用者仍然可以串連伺服器。要完全刪除一個使用者,你必須用一條Delete語句明確從user表中刪除使用者記錄 |