MySQL用户管理和角色授权设置

前言

开发过程中,经常会需要创建数据库,比较安全的做法是对每一个数据库使用自己的用户授权和密码,而不是root走天下。

在开发过程中养成这样的好习惯,对于系统上生产环境部署也是大有裨益的。

本文记录了开发过程中常用的创建数据库、创建用户、用户授权相关的SQL,方便自己平时使用时查阅,也希望给有需要的人提供参考。

以创建数据库 lryx_nest为例,授权访问用户名为 lryx_user,授权访问密码为 m3wt1pt5n2f#(PS:个人习惯,每次建立新项目时,用户名和项目相关,密码将之前的数据库密码保留#号,其余字符每一位随机修改)。

MySQL8之后,用户创建和授权sql进行了调整,请注意哦~

MySQL8支持直接给用户授权,同时也支持按照角色给用户授权。

一、MySQL 5.7

创建用户,并授予所有权限

grant all privileges on lryx_nest.* to lryx_user@'%' IDENTIFIED BY "m3wt1pt5n2f#";

撤销授权

revoke all on lryx_nest.* from lryx_user@'%';

创建用户-只读账号

grant select on lryx_nest.* to lryx_user@"%"  IDENTIFIED BY "m3wt1pt5n2f#"

刷新权限

flush privileges;

二、MySQL 8 - 用户授权模式

创建用户

create user 'lryx_user'@'%' identified by 'm3wt1pt5n2f#';

用户授权

grant all privileges on lryx_nest.* to lryx_user@'%';

刷新权限

flush privileges;

修改用户

alter user set user.host='%' where user.user='lryx_user'

三、MySQL 8 - 角色授权模式

创建角色 lryx_nest_role

create role lryx_nest_role;

角色授权

grant all privileges on lryx_nest.* to lryx_nest_role;

创建用户

create user 'lryx_user'@'%' identified by 'm3wt1pt5n2f#';

赋予用户某个角色

grant lryx_nest_role to 'lryx_user'@'%';

刷新权限

flush privileges;

相关链接