MySQL与Oracle 差异比较之七用户权限
用户权限
编号
类别
ORACLE
MYSQL
注释
1
创建用户
Createuseruser_nameidentifiedbyuser_password
defaulttablespacestarSpacetemporarytablespacetemp;CREATEUSERuser_nameIDENTIFIEDBYuser_password;
1.oracle创建用户
Oracle的默认用户有三个:sys/system/scott.其中sys和system是系统用户,拥有dba权限,scott用户是Oracle数据库的一个示范账户,在数据库安装时创建,不具备dba权限.
创建用户命令:
Createuseruser_nameidentifiedbyuser_password
[defaulttablespacetableSpace]
[temporarytablespacetableSpace};
说明:
每个用户都有一个默认表空间和一个临时表空间,如果没有指定,oracle就将system设置为默认表空间,将temp设为临时表空间.
2.mysql创建用户
创建用户命令:
mysql>CREATEUSERyyIDENTIFIEDBY'123';
yy表示你要建立的用户名,后面的123表示密码
上面建立的用户可以在任何地方登陆。
如果要限制在固定地址登陆,比如localhost登陆:
mysql>CREATEUSERyy@localhostIDENTIFIEDBY'123';
2
删除用户
Dropuseruser_namecascade;
Dropuseruser_name;
1.Oracle
SQL>dropuser用户名; //用户没有建任何实体
SQL>dropuser用户名CASCADE; //将用户及其所建实体全部删除
注:当前正连接的用户不得删除。
2.Mysql
自4.1.1以后,删除一个MYSQL帐户,可以使用dropuser语句了。
不过在5.0.2之前的版本中,dropuser语句只能删除没有任何权限的用户。
从5.0.2往后的版本中,dropuser语句可以删除任何用户。(当然不能自己删自己)。示例:dropuser"garfield"@"localhost"。别忘了加后面的@,不然会报错。
在4.1.1与5.0.2之间的版本中要删除一个MYSQL帐户,需要进行以下操作。
1)使用showgrants语句查看要删除的MYSQL帐户都有哪些权限,使用方法如showgrantsfor"garfield"@"localhost"。
2)使用revoke语句收回用户在showgrants里拥有的权限。执行这个语句将删除除user表之外的其它所有权限表中的相关记录,并且收回在user表中该用户拥有的全局权限。
3)使用dropuser语句把用户从user表中删除。
3
修改密码
alteruseruser_nameidentifiedbynew_password
mysqladmin-uroot-p123456password"yourpassword";1.mysql修改密码
第一种方式:
1)更改之前root没有密码的情况
c:\mysql\bin>mysqladmin-urootpassword"yourpassword"
2)更改之前root有密码的情况,假如为123456
c:\mysql\bin>mysqladmin-uroot-p123456password"yourpassword"
注意:更改的密码不能用单引号,可用双引号或不用引号
第二种方式:
1)c:\mysql\bin>mysql-uroot-p密码以root身份登录
2)mysql>usemysql选择数据库
3)mysql>updateusersetpassword=password('你的密码')whereUser='root';
4)mysqlflushprivileges;重新加载权限表
4
设置用户权限
Grantconnecttostar --star角色允许用户连接数据库,并创建数据库对象
Grantresourcetostar --star角色允许用户使用数据库中的存储空间.
Grantdbatostar --DBA权限GRANTALLONpicture.*TOtestIDENTIFIEDBY"test";
1.详见<
2.详见<
5
回收权限
Revokeselect,updateonproductfromuser02;
REVOKEprivileges(columns)ONwhatFROMuser
1.Oracle
Revoke语句的基本格式如下:
REVOKE权限类型[(字段列表)][,权限类型[(字段列表)]…]ON{数据库名称.表名称}FROM用户名@域名或IP地址
例如,管理员撤销用户admin@localhost对数据库xsxk所拥有的创建、创建数据库及表的权限,并撤销该用户可以把自己所拥有的权限授予其他用户的权限,可使用以下命令。
mysql>revokecreate,droponxsxk.*fromadmin@localhost;
mysql>revokegrantoptiononxsxk.*fromadmin@localhost;
revoke语句中的“用户名@域名或IP地址”部分必须匹配原来grant语句中的“用户名@域名或IP地址”部分,而“权限类型”部分可以是所授权的一部分权限。而且,revoke只能撤销权限,不能删除用户账户,在授权表user中仍保留该用户的记录;用户仍可以连接到数据库服务器。如果要完全删除用户,则使用前面提到的delete语句从user表中删除该用户记录。
2.Mysql
要取消一个用户的权限,使用REVOKE语句。REVOKE的语法非常类似于GRANT语句,除了TO用FROM取代并且没有INDETIFEDBY和WITHGRANTOPTION子句:
REVOKEprivileges(columns)ONwhatFROMuser
user部分必须匹配原来GRANT语句的你想撤权的用户的user部分。privileges部分不需匹配,你可以用GRANT语句授权,然后用REVOKE语句只撤销部分权限。
REVOKE语句只删除权限,而不删除用户。即使你撤销了所有权限,在user表中的用户记录依然保留,这意味着用户仍然可以连接服务器。要完全删除一个用户,你必须用一条Delete语句明确从user表中删除用户记录