当前位置: 首页 > news >正文

【MySQL】用户和权限管理

一、用户和权限

        在数据库服务安装之后,会自带一个 root 用户,它是MySQL的超级管理员账户,拥有最高权限,可以新建和操作数据库服务中管理的所有数据库。

        但是在实际应用中,我们更希望某个用户只能使用其对应管理和操作的那个数据库,对于其他的则数据库无法进行访问。这时候就可以创建一个用户并给予相关的权限来实现

二、用户管理

2.1 查看用户与权限

查看当前数据库可以看到有一个mysql库,里面储存了相关表、视图、存储过程数据库对象,也包括我们的用户

通过查看表结构就可以看到各种权限,删除、创建、修改等等

可以通过 Navicat 来查看用户表中的记录

  • host:代表当前可以登录的主机
  • user:代表了用户名
  • aurhentication_string:被加密过后的用户密码
  • 后面的字段代表着各种权限,Y具有权限,N没有权限

可以看到 root 老大哥拥有了所有的权限

使用命令对user表中的记录进行查询

select host,user, authentication_string from user\G;
-- \G 去掉查询时的边框 

2.2 查看当前用户

# 语法
select user();

2.3 创建用户

# 语法
CREATE USER [IF NOT EXISTS] 'user_name'@'host_name' IDENTIFIED BY 'auth_string';

其中 'user_name'@'host_name' 统一称为用户,user部分就是用来登录MYSQL的用户名,host部分是可以用来登录的主机名或IP(可以指定一个具体的机器或一个IP的范围),只有指定的机器才可以访问当前的MYSQL

  • 如果不指定 host_name 相当于 'user_name'@'%' ,%表示所有主机都可以连接到数据库,这会导致严重的安全问题,所以不建议这种写法
  • user_name 和 host_name 必须用单引号包裹,然后写成 'user_name@host_name'相当于 'user_name'@'%'

host_name 有以下四种写法:

  • localhost 或 127.0.0.1 : 只允许从本机登录
  • 192.168.100.1 :只包含特定的主机可以登录
  • 192.168.100.0/255.255.255.0 :网络号为192.168.100.0的主机可以登录
  • 192.168.100.23/24 : 与第二种范围一样,从MySQL8.0.23开始使用

2.4 修改密码

修改密码的前提依旧是有权限,例如root用户就可以为任何用户修改密码

# 语法
# 为指定用户设置密码
ALTER USER 'user_name'@'host_name' IDENTIFIED BY 'auth_string';# 为指定用户设置密码
SET PASSWORD FOR 'user_name'@'host_name' = 'auth_string';# 为当前登录用户设置密码
SET PASSWORD = 'auth_string';

2.5 删除用户

有相应的权限可以一次删除多个用户

# 语法
DROP USER [IF EXISTS] 'user_name'@'host_name' [,...];

三、权限管理

3.1 可用权限摘要

MySQL官方说明文档:MySQL :: MySQL 5.7 参考手册 :: 6.2.2 MySQL 提供的权限https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

3.2 用户授权

# 语法
GRANT priv_type[,priv_type ...] ON priv_level
TO 'user_name'@'host_name' [WITH GRANT OPTION]
  • priv_type:权限类型,参考3.1表中的 "特权" 列
  • priv_level:可操作的表的范围,* 或 *.* 或 db_name.* ,*.*代表了数据库下的所有表
  • 'user_name'@'host_name' :指定用户
  • [WITH GRANT OPTION]:可选,允许用户将自己的权限授权给其他用户

如果授权后还是无法进行操作可以用以下命令刷新权限,或是重新登陆

flush privileges

3.3 权限回收

# 语法
REVOKE [IF EXISTS] priv_type[,priv_type...] ON priv_level
FROM 'user_name'@'host_name' [,'user_name'@'host_name'...] 

[未完待续...]

http://www.dtcms.com/a/390430.html

相关文章:

  • STM32项目分享:游泳馆闸机计费管理系统设计
  • 《C++进阶之STL》【unordered_set/unordered_map 模拟实现】
  • LLM中如何添加special_token,并且尽可能保持原模型的训练效果
  • [x-cmd] 使用系统包管理器安装 x-cmd
  • 亮数据MCP结合Dify:构建自动化视频数据抓取与智能分析工作流的深度实践
  • 革新交互体验,开启未来智慧生活 —— OPE.AI 多语言多模态AI产品
  • 生活琐记(2)
  • 一文读懂HTTP 1.1/2.0/3.0:从原理到应用的通俗解析
  • JavaStream用法全解析
  • 在日常开发中实现异常处理和空值处理的最佳实践
  • openstack port binding failure (by quqi99)
  • leetcode 3484. 设计电子表格 中等
  • Docker+cpolar 实战:打造灵活可控的远程办公系统
  • uniApp开发XR-Frame微信小程序 | 设置透明贴图
  • M3 Ultra版Mac Studio无法正常升级到macOS 26.0 苹果已经在调查
  • 老的ios项目在新的mac M1上编译运行遇到的问题及整理
  • Java 大视界 -- Java 大数据机器学习模型在元宇宙虚拟场景智能交互中的关键技术
  • 2025年目标检测还有什么方向好发论文?
  • 离线openHarmonySdk鸿蒙系统动态库的封装
  • 从零实现鸿蒙智能设备数据采集:权限、传感器、云端上传全流程实战
  • 智慧医院IBMS中央集成系统解决方案:构建医疗安全优先的智慧运营中枢​
  • ✅ Python房源数据采集+分析+预测平台 requests爬虫+sklearn回归 大数据实战项目(建议收藏)机器学习(附源码)
  • 结婚证 OCR 识别:政务服务提速的 “关键一环”
  • Git企业开发--多人协作
  • 【论文阅读 | IF 2025 | IF-USOD:用于水下显著目标检测的多模态信息融合交互式特征增强架构】
  • 【14/20】安全强化:HTTPS 和率限制在 Express 中的应用,实现防护机制
  • C#调用钉钉API实现安全企业内部通知推送
  • MyBatis与MyBatis-Plus区别
  • 数据血缘探秘:用SQL串联不同数据源的脉络
  • 多线程程序性能优化:缓存命中率与伪共享深度剖析