Mysql中的用户管理实践

 更新时间:2025年05月28日 15:04:42   作者:猫咪-9527  
这篇文章主要介绍了Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

13. 用户管理

为什么不能只用 root: 出于安全考虑,不应该所有操作都由 root 执行。

MySQL 的用户信息存储位置: mysql.user 表。

13.1 用户

📌 13.1.1 用户信息

  • 用户表字段解释:
    • host: 可以从哪台主机登录。
    • user: 用户名。
    • authentication_string: 加密后的密码。
    • *_priv: 用户权限。
select User,Host,authentication_string from user;

📌 13.1.2 创建用户

语法:

create user '用户名'@'主机名' identified by '密码';

示例:

create user 'maomi-9527'@'localhost' identified by '666888';

📌 13.1.3 删除用户

正确语法:

drop user '用户名'@'主机名';

常见错误:

drop user maomi-9527; -- 错误,因为主机名默认是 %

原因:

mysql可以创建两个相同用户相同密码但登录地点不一样的用户:

📌 13.1.4 修改用户密码

自己改密码:

set password = password('新密码');

root 改指定用户密码:

set password for 'maomi-9527'@'localhost' = password('666888');

由于在 MySQL 中,用户信息本质上是存储在 mysql.user 表中的,因此我们也可以直接通过 SQL 语句修改该表的内容来重设密码。例如:

UPDATE user SET authentication_string = PASSWORD('你的新密码') WHERE user = 'root' AND host = 'localhost';

📌 13.1.5 密码策略要求

MySQL 8.0+ 版本默认启用了 validate_password 插件,它会根据以下规则检查密码强度:

  • 密码长度:默认要求密码至少为 8 个字符。
  • 字符复杂度
  • 至少包含一个大写字母(A-Z)。
  • 至少包含一个小写字母(a-z)。
  • 至少包含一个数字(0-9)。
  • 至少包含一个特殊字符(例如 @, #, $, %)。

1. 设置一个更强的密码

你可以设置一个符合强度要求的密码,例如:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';

或者:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Str0ngP@ssw0rd!';

2. 临时降低密码策略要求

如果你不想设置那么复杂的密码,可以通过降低密码策略要求来解决。执行以下命令来临时降低要求:

SET GLOBAL validate_password_policy  = LOW;-------------------设置密码强度为低
SET GLOBAL validate_password_length = 6;----------------------设置密码长度为6
SET GLOBAL validate_password_mixed_case_count = 0;------------设置混合字符为0
SET GLOBAL validate_password_special_char_count = 0;  --------设置特殊字符个数为0

然后,你就可以设置一个简单的密码了:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'simplepass';

注意: 降低密码策略可能会影响安全性,操作完成后可以将策略恢复:

SET GLOBAL validate_password_policy  = MEDIUM;-------------------设置密码强度为低
SET GLOBAL validate_password_length = 8;----------------------设置密码长度为6
SET GLOBAL validate_password_mixed_case_count = 1;------------设置混合字符为0
SET GLOBAL validate_password_special_char_count = 1;  --------设置特殊字符个数为0

3. 查看当前密码策略

你可以通过以下命令查看当前密码策略的设置:

SHOW VARIABLES LIKE 'validate_password%';

13.2 数据库的权限

📌 常见权限:

select, insert, update, delete, create, drop, grant, all 等。

📌 13.2.1 授权

授权语法:

grant 权限列表 on 数据库.表 to '用户名'@'主机' [identified by '密码'];

示例:

grant select on text.* to 'maomi-9527'@'localhost';------给用户在test数据库中所有表的查看权限

赋权前: 

赋权后:

查看当前权限:

show grants for 'maomi-9527'@'localhost';

📌 13.2.2 回收权限

撤销语法:

revoke 权限列表 on 数据库.对象 from '用户名'@'主机';

示例:

revoke select on text.* from 'maomi-9527'@'localhost';

📝 常见问题提示:

若密码设置失败报错 ERROR 1819

SHOW VARIABLES LIKE 'validate_password%';

可调整密码策略来解决。

赋权后无效时建议:

flush privileges;

到此这篇关于Mysql中的用户管理的文章就介绍到这了,更多相关mysql用户管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL启动报错:Starting MySQL.. ERROR! The server quit without updating PID file的问题分析和解决

    MySQL启动报错:Starting MySQL.. ERROR! The se

    这篇文章给大家介绍了MySQL启动报错:Starting MySQL.. ERROR! The server quit without updating PID file的问题分析和解决办法,文中给出了详细的原因分析,需要的朋友可以参考下
    2023-12-12
  • MySQL的mysqldump工具用法详解

    MySQL的mysqldump工具用法详解

    这篇文章主要介绍了MySQL的mysqldump工具用法详解,同时附带了相关Source命令的用法,详解需要的朋友可以参考下
    2015-07-07
  • mysql 如何动态修改复制过滤器

    mysql 如何动态修改复制过滤器

    这篇文章主要介绍了mysql 如何动态修改复制过滤器,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
    2020-11-11
  • Mysql分组查询取最新的几种方案总结

    Mysql分组查询取最新的几种方案总结

    在写报表功能时遇到一个需要根据用户id分组查询最新一条钱包明细数据的需求,下面这篇文章主要给大家总结介绍了关于Mysql分组查询取最新的几种方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • MySQL实现replace函数的几种实用场景

    MySQL实现replace函数的几种实用场景

    这篇文章主要介绍了MySQL实现replace函数的几种实用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Mysql CAST函数的具体使用

    Mysql CAST函数的具体使用

    本文主要介绍了Mysql CAST函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • mysql Load Data InFile 的用法

    mysql Load Data InFile 的用法

    Load Data InFile是用于批量向数据表中导入记录。
    2009-05-05
  • Mysql中新建用户及授权的方法分享

    Mysql中新建用户及授权的方法分享

    这篇文章给大家汇总介绍了Mysql中新建用户及授权的方法,首先介绍的是作者自己的项目经历,后面附上了参考文章,希望能对大家学习mysql有所帮助。
    2016-07-07
  • MySQL 索引排序与文件排序的实现

    MySQL 索引排序与文件排序的实现

    本文主要介绍了MySQL 索引排序与文件排序的实现,索引排序通过匹配索引列顺序提升效率,文件排序则根据数据量采用单路、双路或归并方式处理,下面就来介绍一下,感兴趣的可以了解一下
    2025-06-06
  • MySql开发之自动同步表结构

    MySql开发之自动同步表结构

    这篇文章主要给大家介绍了关于MySql开发之自动同步表结构的相关资料,这样可以避免在开发中由于修改数据库字段导致的数据库表不一致问题,需要的朋友可以参考下
    2021-05-05

最新评论