用户的作用
用于管理用户登录和权限的。
root账号,只能本地登录,且操作权限太高。
为服务或者用户专门建立用户,实现一服务一用户或者专人专用。1. 登录地址你可以很好的控制;2. 权限分配控制 3. 追踪设置
mysql用户的构成
- 用户名:
- 允许登录的地址:
- 密码:
- 权限:
mysql -u root -p(password)
root@localhost : 只允许在localhost地址登录,也就是本地登录,localhost会被解析为127.0.0.1 这个本地回环地址。
在这个允许登录的地址中,我们可以使用%表示任意的后续IP地址。
%
: 表示任意的IP地址。
127.%
: 表示任意的以127开头的IP地址。
10.10.%
:表示任意的以10.10开头的IP地址。
192.168.126.%
:表示任意的以192.168.126开头的IP地址。
在mysql的这些账号中,其如果用户名部分相同,但是允许登录的地址不同(哪怕是包含关系的地址),那么这些账号就会被视为不是一个账号。 如root@localhost 和root@%就不是同一个账号。
而当用户的允许登录地址满足多个同名账号的允许登录地址时,使用的是范围最小的那一个。
查询当前系统中的mysql用户
select concat("'",
user,"'@'",
host,"'")
usernamefrom
mysql.
user;
创建用户
create user "用户名"@"允许登录的地址" identified [with 加密插件名] by "密码";
允许登录的地址 指的是这个用户名在哪个!P地址下可以进行登录,同一个用户名可以指定不同的地址、不同的密码和不同的权限,实现同一个用户名在不同地方表现的效果不一样。这个!P地址中不确定的部分可以使用 % 代替比如:% 就表示允许所有IP地址进行登录,192.168.16.% 就表示只允许192.168.16.0 网段的用户进行登录。另外,这个位置也允许使用域名。
修改密码
alter user "用户名"@"允许登录的地址" identified [with 加密插件名] by "密码";
删除用户
drop user "用户名"@"允许登录的地址"
;
权限设置
权限相关的语法属于DCL
我们新创建的用户是没有任何权限的,只能登录,然后啥都做不了。
我们可以使用以下语法对用户进行授权:
grant 权限允许的操作 on 权限作用的数据库.权限作用的表 to "用户名"@"允许登录的地址" [with grant option];
*
表示任意
homework.*
在homework数据库中的任意表
*.*
在任意数据库中的任意表
[with grant option]
可选内容,表示允许授权账号再次将其拥有的这些权限再度授权给其他用户,或者从其他用户中删除这部分的权限。权限主要是指增删改查。
权限允许的操作
all,alter,create,等
查询权限
show grands for "用户名"@"允许登录的地址";
撤销权限
revoke 权限允许的操作 on 权限作用的数据库.权限作用的表 from "用户名"@"允许登录的地址";
刷新权限
手动刷新权限的语法:flush privileges;
提供给其他人使用mysql
mysql的账号应该尽可能专人专用,专门为他人创建一个账号。