本博文源于mysql基础,主要对用户与权限学习与练习。涉及内容:创建用户、修改用户、删除用户、授予用户权限、撤销用户权限、查看用户权限。
在mysql的日常管理和实际操作中,为了避免用户恶意冒名使用root帐号控制数据库,通常需要创建一系列具备适当权限的帐号,应该尽可能地不用或少用root帐号登录系统,防止用户非安全访问。
格式
CREATE USER <用户名> [IDENTIFIED] BY [PASSWORD] <口令>
创建用户需要注意以下几点:
create user 'james'@'localhost' identified by 'tiger';
可以使用RENAME USER语句修改一个或多个已经存在地MySQL用户账号。
RENAME USER <旧用户> TO <新用户>
需要注意的是:
修改用户口令使用SET PASSWORD
SET PASSWORD [ FOR <用户名> ] =
{
PASSWORD('新明文口令') } OLD_PASSWORD('旧明文口令') | '加密口令值'
}
修改用户密码注意:
rename user james@'localhost' to jack@'localhost';
set password for 'jack'@'localhost'=password('lion');
可以使用drop user语句来删除一个或多个用户帐号以及相关的权限
DROP USER <用户名1> [,<用户名2>]...
需要注意的是
drop user 'jack'@'localhost';
用户创建成功后,需要为用户分配适当的访问权限
对于新建的mysql用户,必须给它授权,可以用GRANT语句来实现对新建用户的授权
语法格式:
GRANT
<权限类型> [ (<列名>)][,<权限类型> [(<列名>)]]
ON <对象> <权限类别> TO <用户>
其中<用户>的格式:
<用户名> [IDENTIFIED] BY [PASSWORD] <口令>
[WITH GRANT OPTION]
| MAX_QUERIES_PER_HOUR <次数>
| MAX_UPDATES_PER_HOUR <次数>
| MAX_CONNECTIONS_PER_HOUR <次数>
| MAX_USER_CONNECTIONS <次数>
grant select,insert on *.* to 'testUser'@'localhost'
identified by 'testPwd' with grant option;
select Host,User,Select_priv,Grant_priv from mysql.user where User = 'testUser';
可以使用REVOKE语句撤销一个用户的权限,此用户不会被删除
有两种格式,第一种:
REVOKE <权限类型> [(<列名>)] [,<权限类型>[(<列名>)]]...
ON <对象类型> <权限名> FROM <用户1> [,<用户2>]...
第二种:
REVOKE ALL PRIVILEGES,GRANT OPTION
FROM user <用户1> [,<用户2>]...
需要注意的是:
revoke insert on *.* from 'testUser'@'localhost';
select Host,User,Select_priv,Insert_priv,Grant_priv
from mysql.user where User = 'testUser';