likes
comments
collection
share

MySQL 入门篇之用户管理

作者站长头像
站长
· 阅读数 9

前言

在公司中, 为了数据的安全性通常每个 MySQL账号只能访问某一个数据库, 对该机器上的其他数据库是不可见的. 在我们使用宝塔数据库时也是这样, 会针对每一个数据库来创建生成新的用户, 并保持数据隔离, 接下来就了解一下具体实现的方式方法

MySQL版本: 8.0

用户管理

MySQL中用户分别 root用户和普通用户, 对于root用户来说, 它拥有绝对的权限, 增删改查普通用户的权限, 查询所有数据的权限等, 但是普通用户只能使用分配给他的权限

MySQL中提供了很多语句来管理用户账号, 这些语句来管理登录退出服务器, 是否允许创建删除用户, 权限管理等

MySQL中, 数据库的安全性由账号管理来保证

用户创建

--- 'username'@后跟 %或者localhost, 代表这个账号的 ip访问权限是所有或者本地访问
create user 'username'@'host' identified by 'password'

新建用户使用 Navicat无法登陆

MySQL 入门篇之用户管理

MySQL 入门篇之用户管理

如果大家碰到创建成功, 但是新创建的用户使用Navicat去连接可能会报错, 这个时候我们可以去看一下数据库mysql中的表user里面是否有这个用户

MySQL 入门篇之用户管理

可以看到, 我们是成功创建了的, 这个时候就要去命令行界面登录试一下, 我使用的是 Windows系统, 直接Win+R打开命令行界面 mysql -uning -p123456

MySQL 入门篇之用户管理

可以看到可以登录, 则代表我们其实已经创建成功了, 但是为什么使用Navicat工具登录失败报错呢, 这里涉及到MySQL版本升级

  • MySQL 8.0之前 使用的加密规则是: mysql_native_password
  • MySQL 8.0之后 使用的加密规则是: caching_sha2_password

那么想解决这个问题有两种办法:

  • 升级Navicat驱动(非破解版可用)
  • MySQL用户登录密码加密规则还原成mysql_native_password

这里我们讲一下第二个方法, 使用以下SQL命令可以查看到用户的 ip访问权限(host), 用户名(User), 密码加密规则(plugin)

--- 使用命令行方式需要先输入以下命令进入 mysql数据库
use mysql;
--- 使用工具连接直接双击进入 mysql数据库查询以下命令就可以了
select host, User,plugin from user;

MySQL 入门篇之用户管理

可以看到, 用户ning的密码加密规则确实是caching_sha2_password, 那我们就修改一下该用户的加密规则

--- 修改用户的加密规则
ALTER USER 'ning'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
--- 刷新权限
FLUSH PRIVILEGES;
--- 重置密码
alter user 'ning'@'%' identified by '123456';

用户的修改和删除

修改用户就是正常的 update语句, 唯一需要注意的就是别忘记 flush 如下所示

update mysql.user set user = 'new_username' where user = 'old_username';

flush privileges;

删除用户

drop user 'username'
--- 注: 若有多个同名用户, 则默认删除 host为 %的用户

--- 指定 host删除用户 sql语句如下所示
drop user 'username'@'localhost'

还可以使用 delete语句进行用户的删除操作(不推荐)

delete from user where user = 'username' and host = 'localhost'

drop删除用户的时候会同时删除权限等表的数据, delete仅仅删除了用户

修改用户密码

修改当前登录用户密码

alter user user() identified by 'new_password'

--- 或

set password = 'new_password'

修改其他用户的密码

alter user 'username'@'%' identified by 'new_password';

---或
set password 'username'@'%' = 'new_password'

本文内容到此结束了

如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。

如有错误❌疑问💬欢迎各位大佬指出。

我是 宁轩 , 我们下次再见