MySQL之用户管理

MySQL之用户管理

🌟🌟hello,各位读者大大们你们好呀🌟🌟

🚀🚀系列专栏:【MySQL的学习】

📝📝本篇内容:基本说明;创建用户;删除用户;修改用户密码;数据库的权限

⬆⬆⬆⬆上一篇:MySQL视图

💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-

1.基本说明

如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。

在我们的MySQL中有一个库叫做mysql,其中有个表叫做user,用户信息就存储在里面


内容非常多,只截取了一部分,我们也只挑重要的来看

host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆

user: 用户名

authentication_string: 用户密码通过password函数加密后的

*_priv: 用户拥有的权限

2.创建用户

bash 复制代码
create user '用户名'@'登陆主机/ip' identified by '密码';    登录主机/ip填'%'代表所有地方可以登陆的用户


bash 复制代码
flush privileges;  如果发现没有生效,执行此SQL语句,可以不用,最好带上

我们就可以在本机登录了,不过因为权限问题,我们能看见的数据库有限

如果大家windows也安装了的话也可以尝试登录,也是可以的,但是我们无法添加直接windows的ip地址,因为它的ip是局域网ip,不过我们可以将用户登录主机要设为'%',从任意主机可以登录,需要大家注意,不要轻易添加一个可以从任意地方登陆的user!!

3.删除用户

bash 复制代码
drop user '用户名'@'主机名';

不过这边要注意删除的时候必须带上登录主机,在MySQL看来,用户名+主机才算一个用户,否则删除会失败。

4.修改用户密码

bash 复制代码
旧版本5.x版本
set password=password('新的密码');  自己改自己密码
set password for '用户名'@'主机名'=password('新的密码');  root用户修改指定用户的密码
新版本8.x版本
ALTER USER USER() IDENTIFIED BY '你的新密码';
ALTER USER 'jack'@'localhost' IDENTIFIED BY '87654321';

前面也说过了,像我们的用户也是在表中的,因此我们也可以像插入其他表一样插入用户或者修改密码,不过不建议。这边的修改密码就不演示了,没有办法做到实时看到

5.数据库的权限

我们一般常用的就是CURD

bash 复制代码
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']  设置权限
show grants for 'Jack'@'%';                                           查看权限

权限列表,多个权限用逗号分开

刚创建的用户没有任何权限。需要给用户授权

bash 复制代码
grant select on ...
grant select, delete, create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
  • . : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
  • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
  • identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户



Jack用户:

bash 复制代码
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';  回收权限

只要用户拥有任意数据库 / 表的权限(比如给 Jack 授予了 rootDB.t1 的 delete 权限),show databases;就会显示该用户有权限的数据库(这里就是 rootDB)

权限回收与授予:管理员先回收了 Jack 在 rootDB.t1 上的所有权限,再单独授予 delete权限。权限表现:

Jack 仅拥有 rootDB.t1 的删除行数据权限,无 select,drop 等其他权限。

执行 delete from t1 where id=1 失败:因为 where 子句需要 select 权限来定位行。

执行 select、drop 操作均被拒绝,符合权限最小分配原则。

关键结论:delete 权限不包含 select 或 drop 权限;带 where 条件的删除操作必须依赖 select 权限才能执行。
🌸🌸MySQL之用户管理大概就讲到这里啦,博主后续会继续更新更多Qt的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!如有小伙伴需要Qt的安装包可以私信我,你们的支持是博主坚持创作的动力!💪💪

相关推荐
廿一夏7 小时前
MySql存储引擎与索引
数据库·sql·mysql
Mahir087 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
杜子不疼.8 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
石山代码9 小时前
C++ 内存分区 堆区
java·开发语言·c++
lzhdim9 小时前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室10 小时前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
TDengine (老段)10 小时前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
敲个大西瓜10 小时前
Java项目常用数据归档方式
mysql
张小姐的猫11 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
YOU OU11 小时前
Spring IoC&DI
java·数据库·spring