Mysql中的用户管理实践

2025-05-29 03:50

本文主要是介绍Mysql中的用户管理实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...

13. 用户管理

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

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

13.1 用户

13.1.1 用户信息

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

Mysql中的用户管理实践

13.1.2 创建用户

语法:

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

示例:

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

Mysql中的用户管理实践

13.1.3 删除用户

正确语法:

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

常见错误:

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

原因:

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

Mysql中的用户管理实践

13.1.4 修改用户密码

自己改密码:

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

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';

Mysql中的用户管理实践

13.1.5 密码策略要求

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

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

Mysql中的用户管理实践

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';

Mysql中的用户管理实践

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

SET GLOBAL validate_password_polhttp://www.chinasem.cnicy  = MEDIUM;-------------------设置密码强度为低
SET GLOBAL validate_password_length = 8;----------------------设置密码长度为6
SET GLOBAL validate_password_mixed_case_count = 1;------------设置混合字符为0
SET GLOBAL validate_password_sRamJeQYgApecial_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数据库中所有表的查看权限

赋权前: 

Mysql中的用户管理实践

赋权后:

Mysql中的用户管理实践

查看当前权限:

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

Mysql中的用户管理实践

13.2.2 回收权限

撤销语法:

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

示例:

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

Mysql中的用户管理实践

常见问题提示:

若密码设置失败报错 ERROR 1819

SHOW VARIApythonBLES LjsIKE 'validate_password%';

可调整密码策略来解决。

赋权后无效时建议:

flush privileges;

到此这篇关于Mysql中的用户管理的文章就介绍到这了,更多相关mysql用户管理内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Mysql中的用户管理实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154832

相关文章

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据