MySQL用户管理
文章目录
- 一、用户
- 1.用户信息
- 2.创建用户
- 3.删除用户
- 4.修改用户密码
- 二、数据库的权限
- 1. MySQL 中的权限
- 2.给用户授权
- 3.回收权限
如果我们只能使用 root 用户,那么会存在安全隐患。这时,就需要使用 MySQL 的用户管理。
一、用户
1.用户信息
MySQL 中的用户信息,都存储在系统数据库 mysql 的 user 表中。
说明:
① user:用户名。
② host:表示这个用户可以从哪个主机登录(如果是 localhost,表示只能从本机登录)。
③ authentication_string:用户密码通过 password 函数加密后的。
④ *_priv:用户拥有的权限。
2.创建用户
create user '用户名'@'登录主机' identified by '密码';
创建一个名为 skc,且可以从任意主机登录的用户。
若用户的登录主机是 %,则该用户也可以在其它主机远程登录。
3.删除用户
drop user '用户名'@'登录主机';
删除一个名为 skc,且可以从任意主机登录的用户。
4.修改用户密码
# root用户修改指定用户的密码
set password for '用户名'@'登录主机'=password('新的密码');
或
update user set 密码设置的地方=password('密码') where User='用户名' and Host='登录主机';
# 用户自己改自己的密码
set password=password('新的密码');
注:按照版本的不同,密码设置的地方可能是 password,也有可能是 authentication_string 。
root 用户修改 ‘skc’@‘%’ 的密码。
法一:
法二:
‘skc’@‘%’ 自己改自己的密码。
二、数据库的权限
1. MySQL 中的权限
2.给用户授权
新创建的用户几乎没有权限,因此在创建用户后需要给用户授权。
grant 权限列表 on 库名.对象名 to '用户名'@'登录主机' [identified by '密码'];
说明:
① ‘用户名’@‘登录主机’:表示要给哪个用户赋予权限。
② 库名.对象名:表示要给用户赋予在哪个对象上的权限。
③ 权限列表:表示要给用户赋予哪种权限(若有多个权限则用逗号分隔开)。
④ identified by ‘密码’:可选项。如果该用户存在,则在赋予权限的同时修改该用户的密码;如果该用户不存在,则创建该用户。
注:
grant all [privileges] on ...;
:表示赋予该用户在该对象上的所有权限。
可以通过命令
show grants for '用户名'@'登录主机';
来查看某个用户所拥有的权限。
新创建的用户 ‘skc’@‘%’ 几乎没有权限。
root 用户给 ‘skc’@‘%’ 用户赋予在 102_db.* 上的 select 权限。
‘skc’@‘%’ 用户没有 create 权限。
root 用户给 ‘skc’@‘%’ 用户赋予在 102_db.* 上的 create 权限。
被赋权的用户需要重新登录,其被赋予的权限才能生效。
‘skc’@‘%’ 用户没有 drop 权限。
root 用户给 ‘skc’@‘%’ 用户赋予在 102_db.* 上的 drop 权限。
被赋权的用户需要重新登录,其被赋予的权限才能生效。
赋予该用户在该对象上的所有权限。
如果发现赋予权限后,没有生效,则执行命令flush privileges;
,但实际上该命令并没有什么效果。
实际上最有用的方法就是,直接退出重新登录,这样必定会生效。
3.回收权限
revoke 权限列表 on 库名.对象名 from '用户名'@'登录主机';
回收 ‘skc’@‘%’ 用户在 102_db.* 上的所有权限。