【MySQL】 -- 用户管理

1. 权限

如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。创建出非root用户,限制其权限。

权限这个概念拿出来就是用来限制非root用户的。这样从技术手段上保证了数据的安全性和完整性,防止有人删库跑路,把核心的库删除了。

有了权限后,不同职责的人所负责的库不同,大大的提高了数据库的安全性。

2. 用户

2.1 用户信息

MySQL中的用户,都存储在系统数据库mysql的user表中。

还可以通过desc user查看表结构

常见的字段如下:

  • host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
  • user: 用户名
  • authentication_string: 用户密码通过password函数加密后的
  • *_priv: 用户拥有的权限

2.2 创建用户

语法:

sql 复制代码
create user '用户名'@'登陆主机/ip' identified by '密码';

使用案例

这是因为设置的密码不符合MySQL的策略。可以查看当前设置密码的策略

SHOW VARIABLES LIKE 'validate_password%';

对应的策略如下:

Variable Name Value Meaning
validate_password.check_user_name OFF 不检查用户名是否在密码中出现过
validate_password.dictionary_file 未指定密码检查的字典文件
validate_password.length 8 密码的最小长度要求为 8 个字符
validate_password.mixed_case_count 1 密码中至少需要包含 1 个大写字母
validate_password.number_count 1 密码中至少需要包含 1 个数字
validate_password.policy MEDIUM 密码策略设置为中等级别,包含长度、大小写、数字和特殊字符的要求
validate_password.special_char_count 1 密码中至少需要包含 1 个特殊字符

设置一个强密码即可。

此时再连接数据库的时候就可以使用新账号和密码进行登录了。

新增用户,,不要轻易添加一个可以从任意地方登陆的user。因为MySQL服务端口默认使用的是3306,且向任意IP开放的,这样做可以有效减少远程攻击的风险。

2.3 删除用户

语法:

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

使用示例

先查出MySQ都有哪些用户。(需要使用root权限进行查看和删除)

删除用户ding

2.4 修改用户密码

语法:

  • 自己修改自己的密码
sql 复制代码
set password=password('新的密码');
  • root用户修改指定的用户密码
sql 复制代码
set password for '用户名'@'主机名'=password('新的密码');

3. 数据库权限

MySQL数据库提供的权限列表:

3.1 给用户授权

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

语法:

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

使用案例 -- 给用户ding赋予scott数据库下所有文件的select权限

sql 复制代码
grant select on scott.* to 'ding'@'localhost';

使用用户ding连接数据库进行测试 如下:

如果root用户给完权限后,没有生效,使用flush privileges; 进行刷新。

3.2 回收用户权限

语法:

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

使用示例 -- 回收用户ding的scott数据库的所有权限

sql 复制代码
revoke all on scott.* from 'ding'@'localhost';

使用用户ding连接数据库进行测试如下:

相关推荐
海兰1 小时前
【数据库】tdsql(mysql8.0)优化思考三
数据库·redis
煎饼学大模型2 小时前
Agent 的“大脑-手“解耦架构:当推理层和工具执行层各自独立演进
数据库·人工智能·oracle·架构·agent
暖和_白开水5 小时前
数据分析agent(十三_3):docker mysql容器镜像服务的异常错误
mysql·docker·容器
muddjsv6 小时前
SQLite数据库文件机制详解:journal、wal、shm文件作用与备份避坑
数据库·sqlite
吴声子夜歌7 小时前
MongoDB 4.2——应用程序设计
数据库·mongodb
数字新视界7 小时前
动环监控可视化在数据中心管理中的应用与实践解析
数据库·物联网·解决方案·动环监控·大榕树
极地野狼 音乐哔哔7 小时前
数据库备份恢复的原理实践
数据库
互联网中的一颗神经元7 小时前
小白python入门 - 25. SQL 与表设计入门
数据库·python·sql
ttwuai7 小时前
AI 生成后台改数据后,操作日志别只记按钮:Go + MySQL 怎么验
数据库·人工智能·mysql·golang
KaMeidebaby8 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法