MySQL 入门篇之用户管理
前言
在公司中, 为了数据的安全性通常每个 MySQL账号只能访问某一个数据库, 对该机器上的其他数据库是不可见的. 在我们使用宝塔数据库时也是这样, 会针对每一个数据库来创建生成新的用户, 并保持数据隔离, 接下来就了解一下具体实现的方式方法
MySQL版本: 8.0
用户管理
在MySQL
中用户分别 root
用户和普通用户, 对于root
用户来说, 它拥有绝对的权限, 增删改查普通用户的权限, 查询所有数据的权限等, 但是普通用户只能使用分配给他的权限
在MySQL
中提供了很多语句来管理用户账号, 这些语句来管理登录退出服务器, 是否允许创建删除用户, 权限管理等
在MySQL
中, 数据库的安全性由账号管理来保证
用户创建
--- 'username'@后跟 %或者localhost, 代表这个账号的 ip访问权限是所有或者本地访问
create user 'username'@'host' identified by 'password'
新建用户使用 Navicat无法登陆
如果大家碰到创建成功, 但是新创建的用户使用Navicat
去连接可能会报错, 这个时候我们可以去看一下数据库mysql
中的表user
里面是否有这个用户
可以看到, 我们是成功创建了的, 这个时候就要去命令行界面登录试一下, 我使用的是 Windows系统, 直接Win+R
打开命令行界面 mysql -uning -p123456
可以看到可以登录, 则代表我们其实已经创建成功了, 但是为什么使用Navicat
工具登录失败报错呢, 这里涉及到MySQL
版本升级
MySQL 8.0之前
使用的加密规则是: mysql_native_passwordMySQL 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;
可以看到, 用户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'
本文内容到此结束了
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
我是 宁轩 , 我们下次再见
转载自:https://juejin.cn/post/7230307122415566904