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

15--MySQL用户管理

一.为什么要有用户管理

如果我们只能使用root账户,那么就会存在很大的安全隐患,这时候就需要MySQL的用户管理

二.用户账号

结构

MySQL 用户账户由用户名和主机名两部分组成,格式为 'username'@'hostname'

用户名:识别用户的名称

主机名:指定用户可以从哪个主机连接

特别强调:用户账号必须包含这两部分,缺一不可,表示哪个用户,从哪个机器连接

补充
  • 可以使用 % 作为通配符表示任意主机
  • localhost 表示本地连接
  • 特定 IP 地址或域名

一般情况不要使用'%',因为这就导致任何主机都可以访问我们的数据库,风险十分大

localhost和127.0.0.1虽然都是本地主机,但是二者有本质区别,不能认为都是本机连接

localhost 通过 Unix 域套接字(Socket) 连接(Linux/macOS)或命名管道(Windows)

MySQL 视为本地专用连接

127.0.0.1 通过 TCP/IP 协议 连接本地回环地址

MySQL 视为远程连接(即使 IP 是本地)

三.用户信息

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

这是MySQL自动创建的database

字段介绍

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

因为用户密码不能明文保存,只能加密后存起来

可以看到不管密码长度是多少,生成的字符串长度都是一样的,同时我们在命令行中查询历史命令时时不会出现password命令的,原因是涉及到密码的都不会保存历史命令

四.常见用户管理操作

创建用户

语法
create user '用户名'@'登陆主机/ip' identified by '密码';
--创建可以从任意主机连接的用户
CREATE USER 'user_name'@'%' IDENTIFIED BY 'secure_password';
补充

如果我们之前使用了--skip-grant-tables模式,也就是MySQL跳过密码验证登录,那么就无法创建用户和修改密码等操作,这时我们就要先退出MySQL,找到MySQL的配置表并且将--skip-grant-tables注释掉

声明:如果我们在之前一直是免密码登录,那么先不要着急修改配置表,先设置root用户的密码

USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;  --刷新权限缓存

最后一行是刷新操作,我们在用户管理这块会经常用到这个操作

设置好root密码之后再进行修改配置表操作

vim /etc/my.cnf

光标指的这一行前加# 即可

当修改了配置文件后,一定要重启MySQL服务才会生效

sudo systemctl restart mysqld

最后介绍一下这个模式,前面我们使用这个模式用来跳过用户操作,这不是这个模式的正确用法

--skip-grant-tables是MySQL的特殊启动模式,用于:

  • 紧急维护(如修复损坏的权限表)
  • 忘记root密码时重置密码
  • 此时所有用户管理操作都会被禁止

可以看到我们在user表中添加了我们新建用户的信息,我们就可以使用这个用户登录MySQL了

--备注:可能实际在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会爆出如下报错:
-- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
-- 解决方案:Your password does not satisfy the current policy requirements-CSDN博客
--查看密码设置相关要求:SHOW VARIABLES LIKE 'validate_password%';

修改用户密码

1.root用户修改其他用户的密码

set password for '用户名'@'主机名'=password('新的密码');

2.自己修改自己的密码

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

3.root用户忘记密码

按照上面讲的修改配置文件,将--skip-grant-tables恢复免密码登录,再重新启动MySQL,接着就是修改root用户的密码

--更改配置文件
vim /etc/my.cnf
--重新启动MySQL
sudo systemctl restart mysqld
--修改root账户密码
USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;  --刷新权限缓存
--退出重新登录即可

删除用户

语法
DROP USER '用户名'@'主机';

用户权限

MySQL权限列表

给用户授权

新创建的用户是没有权限的,需要给用户授权

语法
GRANT 权限类型 ON 数据库.表 TO '用户名'@'主机' [identifiedby'密码'];

这里的对象指的是表,视图,存储过程等

  • ALL PRIVILEGES:所有权限。
  • SELECT, INSERT, UPDATE, DELETE:数据操作。
  • CREATE, ALTER, DROP:结构修改。
  • GRANT OPTION:允许用户授权给其他用户。

这样该用户就有了MySQL中所有表的所有权限

补充
'*' : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
'库.* ': 表示某个数据库中的所有数据对象(表,视图,存储过程等)
identified by可选。如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

权限列表,多个权限用' , '隔开,如select,update,create

授权后如果权限没有生效,可以刷新一下权限列表

flush privileges;

回收权限

语法
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

查看用户权限

SHOW GRANTS FOR '用户名'@'主机';

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

相关文章:

  • 网站后台登陆图片seo平台优化服务
  • 什么是网站黏着度建设银行网上银行网站
  • 网站建设哪家好万维科技情公司做的网站
  • 以太网全双工通信的异步模型:基于队列、信号量与任务的收 / 发包标准实现
  • 选择网站建设公司好工商红盾网查询系统
  • 新闻类网站模板网站功能列表
  • 网站设置银联密码wordpress类似qq空间
  • 网站建设的需求方案网站开发技术
  • 做旅游景点网站的目的和意义网站的策划方案怎么写
  • 东莞网站建设公司 h5如何让百度快速收录网站
  • 山东省和住房建设厅网站仿煎蛋wordpress主题
  • 网站域名如何查询公司简介模板免费图片
  • 浏览网站时弹出的广告是谁给做的网络营销外包
  • 网站正在建设中_敬请期待期货交易软件定制开发
  • 什么网站做简历模板无锡定制网站制作公司
  • 上海南京东路网站建设wordpress手机号注册
  • 网站建设的大公司蜀山传奇网页游戏
  • 哪里可以做购物网站深圳创新网站建设
  • 建设网站怎么搞注销网站和取消接入
  • 河北省建设招标网站上海知名的网站公司
  • 南通建设企业网站wordpress自助
  • node框架做网站天津网站推广有哪些
  • 扬州网站建设哪家公司好石家庄西晨网站开发
  • 【文献阅读】基于空间金字塔池化卷积神经网络的网络鲁棒性评估综合分析
  • 网站的统计代码甘肃省嘉峪关建设局网站
  • 做班级玩网站做哪些方面网站不备案可以做百度推广吗
  • 电子商务网站制作公司微信官网开发
  • 个人的网站建设目标建设银行手机官方网站下载安装
  • 建设企业网站的意义品牌网站建设收费标准
  • 网页的制作步骤是什么公司网站seo优化的