目录
(一)为什么要有用户管理?
(二)用户
2.1 查看用户信息
2.2 创建用户
2.3 删除用户
2.4 修改用户密码
(三)数据库的权限
3.1 给用户授权
3.2 回收权限
(一)为什么要有用户管理?
如果我们只能使用root用户,这样存在安全隐患:
- 配置不当或者使用默认设置的MySQL服务器可能会受到各种攻击,包括SQL注入和拒绝服务攻击等;
- 如果攻击者成功地访问了root账户,他们就能够完全控制数据库,并且可以对数据进行修改、删除或窃取等操作;
- 此外,将root账户用于所有操作也可能导致权限混乱和错误。
因此,这时,就需要使用MySQL的用户管理。建议创建一个专门的用户账户来管理MySQL数据库,该账户仅具有必要的最低权限来执行所需的任务,并且需要在必要时使用密码和SSL等安全措施来保护数据库。使用这种方法可以最大程度地减小安全风险,并且能够更好地管理数据库。
(二)用户
MySQL提供了一套全面的用户管理系统,允许您创建、修改和删除用户账户,并分配权限以控制对数据库和表的访问。
2.1 查看用户信息
- MySQL中的用户,都存储在系统数据库mysql的user表中(即我们最初进入时可以发现数据库中有张mysql):
- 此时我们再去对user表进行简单查看(还可以通过desc user初步查看一下表结构):
- 紧接着就去查看当前表中的用户信息:
- host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
- user: 用户名
- authentication_string: 用户密码通过password函数加密后的
- *_priv: 用户拥有的权限
2.2 创建用户
当需要创建新用户时,可以使用 create user 语句
- 语法:
create user '用户名'@'登陆主机/ip' identified by '密码';
- 此时,我们就可以用用户名 “zp” 登录MySQL了。具体如下:
- 再去验证是否可以在远端登录,此时我在windows下进行登录操作:
2.3 删除用户
要删除用户,可以使用drop user 语句:
- 语法:
drop user '用户名'@'主机名'
- 此时删除上述创建的账户:
[注意]:直接给个用户名,不能删除,它默认是%,表示所有地方可以登陆的用户
- 紧接着此时当我们想远程登录有没有办法呢?当然是有的,接下来便创建一个可以远程登录的用户:
2.4 修改用户密码
① 自己改自己密码
- 语法:
set password=password('新的密码');
root用户修改指定用户的密码
- 语法:
set password for '用户名'@'主机名'=password('新的密码');
除了上诉两种方法之外,大家还可以通过 update指令来进行修改密码操作
(三)数据库的权限
MySQL数据库提供的权限列表:
3.1 给用户授权
数据库权限是指给予用户在数据库中执行特定操作的权限。在MySQL中,可以通过grant 和revoke语句来控制用户访问和管理数据库的权限。
- 语法:
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
权限列表,多个权限用逗号分开
- grant select on ...
- grant select, delete, create on ....
- grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
- *.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
- 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
- identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
- 此时我们想要做的就是给 “lisi” 用户提权,使其可以看到我们创建的数据库:
- 接下来,我们还可以查看给用户赋予的权限有哪些:
3.2 回收权限
在MySQL中,可以通过REVOKE语句收回用户已经被授权的权限.
- 语法:
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
- 回收 lisi 用户对rootDB数据库的插入权限:
- 回收 lisi 用户对rootDB数据库的删除权限:
- 回收lisi 用户对rootDB数据库的所有权限 :
以上便是本文关于MySQL用户管理的全部内容了!!感谢大家的观看和支持!!!