一、背景

就在昨天,突然意识到自己写的开源项目代码中使用的是超级管理员root。ip地址、用户名、密码都在里面,这秒秒钟被人删库不是正常的嘛?虽然自己的库里没啥值钱的东西,但重新导入也是很烦人的。

自己也刚入职场将近1年,CRUD倒是写得挺多的,但是数据库其他的基本没咋接触过,只能自己摸索,在公司,给用户设置添加权限这些工作都是运维大佬安排的,我这小弟也没机会接触啊。

既然今天遇到了这个问题,就来跟我一起学一把,涨涨小知识~

库存预警项目Gitee传送门
库存预警项目文章传送门

二、创建用户

在你安装好数据库后,最先登录的账号就是root用户了,老大哥了,啥权限都有。

在公司开发中,不可能每个开发人员使用的都是超级账号,这要不爽,删库跑路也太容易了吧,进局子的机会也变多了不是,咱还是老老实实在外面呼吸新鲜空气。

咱们先来创建一个普通developer账号,争取早日让老板多换几辆豪车~

#创建mindwarning用户
CREATE user 'mindwarning'@'%' IDENTIFIED BY 'mindwarning';

注:如果以前创建过相同的user,需要先(1)删除它,再执行(2)刷新操作;
可能出现的错误代码:

SQL错误(1396):Operation CREATE USER failed for 'mindwarning'@'%'

(1)删除用户

DROP USER mindwarning;

(2)刷新权限

FLUSH PRIVILEGES;

通用语句:

CREATE user 'username'@'host' IDENTIFIED BY 'password';

username:创建账号的用户名;
host:允许访问的客户端(ip或者主机地址),%表示允许任意远程主机登陆;
password:该用户名的登录密码。

咱来创建一个牛批的账号:

create user niupi;

该牛批的账号,没有密码、不限IP地址,你说牛不牛~

三、修改用户密码

话说,既然我的ip地址及账号密码都让别人知道了,我也没慌,改个密码人家不就删不了库了,就是部署的线上项目得重新改下密码然后再重新部署一下而已嘛!我保证下次不会再犯错了,希望各位引以为戒。

通用语句:

set password for 'username'@'host' = ‘newPassword’;

如果修改的用户为当前登录mysql数据库的用户可以使用以下语句直接修改:

set password = 'newPassword';

改完密码后,浑身一身轻松啊!上次还遇到由于mysql8的密码机制不同于mysql5导致改不了密码,捣鼓了半天还没解决,这次倒是畅通无阻。
如果你也改不了用户的密码,可以移步到阿里云MySQL安装的文章中,里面有相应的解决方法。

四、删除用户

超级管理员最爽的就是可以随意删除别的账户,这是上班体验不到的快乐,哈哈!

通用语句:

drop user 'username'@'host';

注意:mysql库中的user表的User和Host字段具有唯一性,所以drop删除时,需要带上两个字段一起索引。

五、权限管理

曾经有一份真诚的爱情摆在我的面前,但是我没有珍惜。等到了失去的时候才后悔莫及,尘世间最痛苦的事莫过于此。如果上天可以给我一个机会再来一次的话,我会对你说三个字“我爱你”。如果非要把这份爱加上一个期限,我希望是一万年!

诶,你说如果我可以给我的QQ账号刷一万年的黄钻,偷菜会不会更快啊?

1、权限分类

数据权限

增删改查(select、update、delete、insert)

结构权限

创建、删除表(create、drop)

管理权限

创建用户、授予权限、撤销授权(create user、grant、revoke):通常只给管理员此权限

2、授予权限

#权限分配
GRANT SELECT,UPDATE,DELETE,INSERT,CREATE ON mindwarning.* TO 'mindwarning'@'%';

Look~我给mindwarning用户授予了SELECT,UPDATE,DELETE,INSERT,CREATE权限。

通用语句:

grant 权限列表 on 数据库.表名 to 用户 [with grant option];

权限列表:授权的权限,使用“,”分隔;all privileges表示全部权限
数据库.表名:整个数据库(.)、某个数据库(数据库名.*)、某个表(数据库名.表名)

一般的,老板可以命令主管做什么事,而主管也可以命令手下员工干什么活。那在数据库中怎么实现呢?

像上面的权限分配语句,‘mindwarning’@’%'账号此时被授予了某些权限,但是当它想给另一个账号授予某些权限的时候,就无能为力了。

一方面是它没有grant权限,另一方面即使它被授予了grant权限,由于root没有将权限传递给mindwarning(也就是mindwarning不是主管,就不能命令手下员工)。

那怎么才能传递权限呢?

with grant option

当root用户给某个账号授予权限的时候,可以在账号后面添加with grant option,这样就能传递权限了。

GRANT all privileges ON mindwarning.* TO 'user007'@'%' with grant option;

现在user007拥有了全部权限,且能够使用权限,代替root用户去授予其他账号权限,这应该很好理解的。

3、查看权限

SHOW GRANTS FOR 'mindwarning'@'%';

4、回收权限

revoke all privileges ON mindwarning.* TO 'user007'@'%';

因为’user007’@’%'有with grant option传递权限的能力,所以还需要执行一步才能完成权限的回收;

revoke grant option from 'user007'@'%';

通用语句:

revoke 权限列表/all privileges on 数据库/*.表名/* from 用户;

像我们删除用户后,需要执行刷新语句才能成功。现在执行权限回收则立马有效果,不需要刷新,被执行的用户就能感受到权限被回收的快感,哈哈!这不比贵妃娘娘失宠来的快得多?

5、刷新权限

刷新,将当前对用户的权限操作,进行一个刷新,将操作的具体内容同步到对应的表中。

#(1)
flush privileges;
#(2)
mysqladmin reload;
#(3)
mysqladmin flush-privileges;

注:
第(1)种需要以管理员身份登录才能执行;
如果我们用上面不是管理员的mindwarning账号执行flush privileges;就会出现一下错误:

/* SQL错误(1227):Access denied; you need (at least one of) the RELOAD privilege(s) for this operation */

第(2)、(3)种则需要在操作系统环境下(cmd)运行,在操作工具上运行是会报错的:

/* SQL错误(1064):You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqladmin reload' at line 1 */
/* SQL错误(1064):You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqladmin flush-privileges' at line 1 */

在操作系统环境下就不会报错!

注:能力有限,还请谅解,争取早日能够写出有质量的文章!

我是皮蛋布丁,一位爱吃皮蛋的热爱运动的废铁程序猿。

感谢各位大佬光临寒舍~

MySQL8创建用户及设置权限秘籍相关推荐

  1. linux创建用户、设置权限

    一.Linux系统用户账号的管理 1.添加新的用户账号使用useradd命令,其语法如下: 代码: useradd  选项  用户名 其中各选项含义如下: -c  comment 指定一段注释性描述. ...

  2. mysql创建用户并设置权限

    mysq,功能强大的关系型数据库,它的用户管理在开发过程中当然也尤其重要,接下来就看看mysql的用户管理 1.登录数据库 mysql -uroot -p 回车 输入密码- 回车 2.登录成功后,切换 ...

  3. Linux下创建用户并设置权限

    useradd ssh02 passwd ssh02 chown -R ssh02 /home/tomcat-9.0/logs 1.想创建的用户目录 mkdir /home 2.新建用户到指定的目录 ...

  4. navicat创建用户以及设置权限

    https://blog.csdn.net/qq_32486599/article/details/73603243 为了保证数据库的安全,对操作用户分级授权是非常有必要的,navicat给我们提供了 ...

  5. oracle如何设置权限,Oracle创建用户并设置权限

    SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 9月 29 15:08:34 2007Copyright (c) 1982, 2002, Oracle ...

  6. oracle 创建角色 权限设置,[学习笔记] Oracle创建用户、分配权限、设置角色,

    [学习笔记] Oracle创建用户.分配权限.设置角色, 创建用户 create user student --用户名 identified by "123456" --密码 de ...

  7. linux命令 创建目录权限,linux创建用户并设置目录权限

    [TOC] <linux创建用户并设置目录权限>首发牧马人博客转发请加此提示 常用命令 用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:c ...

  8. MySQL8 创建用户,设置修改密码,授权

    MySQL8 创建用户,设置修改密码,授权 MySQL5.7可以 (创建用户,设置密码,授权) 一步到位

  9. plsql 只读_使用PLSQL 创建Oracle数据库用户并设置权限

    转至https://blog.csdn.net/ying890/article/details/14083029?utm_medium=distribute.pc_relevant_download. ...

最新文章

  1. mysql 储存过程
  2. python常用函数-Python小白必备的8个最常用的内置函数(推荐)
  3. 使用HttpWebRequest请求API接口以及其他网站资源
  4. centos中的配置文件
  5. python break跳出外层_失去循环标记的Python,我这样实现跳出外层循环
  6. oracle11g增加备库,oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
  7. lenovo L480 进入bios_利用微星主板自带的 M-Flash BIOS工具升级BIOS
  8. ie8兼容性视图灰色修复_【ie8兼容性视图灰色修复】ie8兼容性视图 灰色_ie8兼容性视图设置...
  9. (七) 三维点云课程---ICP(Point-to-Point)
  10. 图像基础—— 特征提取之颜色特征提取
  11. 一个更加强大的查壳工具, 更新版本
  12. 读书笔记:PHP和MySQL高性能应用开发 (2019.2.20-2019.3.4)
  13. Expiring XXX record(s) for XXX:120015 ms has passed since batch creation
  14. PHP 无限极分类下拉列表实现
  15. StarRocks Analyzer 源码解析
  16. 【渝粤题库】陕西师范大学201961 中外教育管理史 作业(专升本)
  17. android 悬浮按钮和可交互提示,悬浮按钮的使用原则
  18. Slack设计团队告诉你市值28亿美元的秘密武器是什么
  19. 项目管理 - PM、 SRS、SOW简介及范例
  20. Linux网络bug,Linux系统下的网络带宽测速

热门文章

  1. 2022 最新 Linux 面试题
  2. html 下拉框字体,select下拉框选择字体大小
  3. 视频流异步转码和实时流式转码是什么意思?有什么区别?
  4. linux下面编译库文件,Linux下动态链接库文件的编译与使用
  5. 大胆预测下未来5年的Web开发
  6. ECharts之水球图
  7. QQ提示“对方在线状态按钮版本太低,不能发起会话”解决方法
  8. 天池下的瑞金医院MMC人工智能辅助构建知识图谱
  9. 深入理解Java虚拟机(第二版) 第六章:类文件结构
  10. Python-基本数据类型补充