MySQL8创建用户及设置权限秘籍
一、背景
就在昨天,突然意识到自己写的开源项目代码中使用的是超级管理员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创建用户及设置权限秘籍相关推荐
- linux创建用户、设置权限
一.Linux系统用户账号的管理 1.添加新的用户账号使用useradd命令,其语法如下: 代码: useradd 选项 用户名 其中各选项含义如下: -c comment 指定一段注释性描述. ...
- mysql创建用户并设置权限
mysq,功能强大的关系型数据库,它的用户管理在开发过程中当然也尤其重要,接下来就看看mysql的用户管理 1.登录数据库 mysql -uroot -p 回车 输入密码- 回车 2.登录成功后,切换 ...
- Linux下创建用户并设置权限
useradd ssh02 passwd ssh02 chown -R ssh02 /home/tomcat-9.0/logs 1.想创建的用户目录 mkdir /home 2.新建用户到指定的目录 ...
- navicat创建用户以及设置权限
https://blog.csdn.net/qq_32486599/article/details/73603243 为了保证数据库的安全,对操作用户分级授权是非常有必要的,navicat给我们提供了 ...
- oracle如何设置权限,Oracle创建用户并设置权限
SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 9月 29 15:08:34 2007Copyright (c) 1982, 2002, Oracle ...
- oracle 创建角色 权限设置,[学习笔记] Oracle创建用户、分配权限、设置角色,
[学习笔记] Oracle创建用户.分配权限.设置角色, 创建用户 create user student --用户名 identified by "123456" --密码 de ...
- linux命令 创建目录权限,linux创建用户并设置目录权限
[TOC] <linux创建用户并设置目录权限>首发牧马人博客转发请加此提示 常用命令 用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:c ...
- MySQL8 创建用户,设置修改密码,授权
MySQL8 创建用户,设置修改密码,授权 MySQL5.7可以 (创建用户,设置密码,授权) 一步到位
- plsql 只读_使用PLSQL 创建Oracle数据库用户并设置权限
转至https://blog.csdn.net/ying890/article/details/14083029?utm_medium=distribute.pc_relevant_download. ...
最新文章
- mysql 储存过程
- python常用函数-Python小白必备的8个最常用的内置函数(推荐)
- 使用HttpWebRequest请求API接口以及其他网站资源
- centos中的配置文件
- python break跳出外层_失去循环标记的Python,我这样实现跳出外层循环
- oracle11g增加备库,oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
- lenovo L480 进入bios_利用微星主板自带的 M-Flash BIOS工具升级BIOS
- ie8兼容性视图灰色修复_【ie8兼容性视图灰色修复】ie8兼容性视图 灰色_ie8兼容性视图设置...
- (七) 三维点云课程---ICP(Point-to-Point)
- 图像基础—— 特征提取之颜色特征提取
- 一个更加强大的查壳工具, 更新版本
- 读书笔记:PHP和MySQL高性能应用开发 (2019.2.20-2019.3.4)
- Expiring XXX record(s) for XXX:120015 ms has passed since batch creation
- PHP 无限极分类下拉列表实现
- StarRocks Analyzer 源码解析
- 【渝粤题库】陕西师范大学201961 中外教育管理史 作业(专升本)
- android 悬浮按钮和可交互提示,悬浮按钮的使用原则
- Slack设计团队告诉你市值28亿美元的秘密武器是什么
- 项目管理 - PM、 SRS、SOW简介及范例
- Linux网络bug,Linux系统下的网络带宽测速