一文看尽MySQL用户权限管理,真香!

create user [用户名]@[访问地址] identified by [密码]

举例1:创建zhangsan用户,只是创建用户并没有权限,'localhost’表示只能在本地登录,无法通过远程连接;密码是 password

CREATE USER ‘zhangsan’@‘localhost’ IDENTIFIED BY ‘password’;

举例2:创建lisi用户,只是创建用户并没有权限,密码为 password,%通配符表示任何主机都可以连接(可以远程连接),

CREATE USER ‘lisi’@‘%’ IDENTIFIED BY ‘password’;

举例3:(5.7.7版本前)的创建用户并赋予RELOAD,PROCESS权限 ,在所有的库和表上;*.*:代表所有的库表

GRANT RELOAD,PROCESS ON . TO ‘admin’@‘localhost’ identified by ‘123456’;

二、授权格式及示例:


grant [权限1,权限2,权限3] on . to user@‘host’ identified by ‘password’

常用权限:all privileges、create、drop、select、insert、delete、update

例如,给"zhangsan" 用户管理员权限,并且允许该用户继续给别的用户赋权限

grant all privileges on . to ‘zhangsan’@‘192.168.1.%’ with grant option;

  • all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。

  • on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user

  • to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:‘zhangsan’@‘192.168.1.%’,表示zhangsan这个用户只能在192.168.0.* IP段登录

  • with grant option:通过在grant语句的最后使用该子句,就允许被授权的用户把得到的权限继续授给其它用户

注:使用GRANT添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个UPDATE权限,那么该用户就同时拥有了SELECT和UPDATE权限。

1. 授予管理员权限

举例4:把zhangsan 变成管理员用户,拥有root权限

mysql> GRANT ALL PRIVILEGES ON . TO ‘zhangsan’@‘localhost’ WITH GRANT OPTION;

#刷新权限命令

mysql> flush privileges;

2. 授予数据库、表权限

举例5:授予用户zhangsan可以对test数据库中的所有表进行查询

grant select on test.* to zhangsan;

举例6:授予lisi在test数据库中创建、修改、删除表的权限以及创建视图的权限

grant create、alter、drop、create view on test.* to lisi;

举例7:授予lisi可以对当前数据库中的所有表进行查询, * :表示当前数据库

grant select on * to lisi;

举例8:授予lisi可以创建、修改、删除数据库以及对所有数据库中的所有表进行create、alter和drop

grant create,alter,drop on . to lisi;

举例9:授予lisi可以创建新用户

grant create user on . to lisi;

3. 授予列权限

# 例10:给zhangsan用户赋权限,设置为在test库,shop表,上的id、name、price列只有select 权限

mysql> grant select(id,name,price) on test.temp to zhangsan@‘localhost’ WITH GRANT OPTION;

#刷新权限

mysql> flush privileges;

# 举例11:授予用户zhangsan可以对test.shop表的id和name列进行更新

grant update(id,name) on test.shop to zhangsan@‘localhost’;

# 举例12:查看自己的权限:

show grants;

三、修改用户配置:


1. 回收 mysql 权限

通过 revoke 命令收回用户权限,回收的时候看一下这个用户有哪些权限然后回收

show grants for admin@‘localhost’;

mysql> show grants \G

*************************** 1. row ***************************

Grants for admin@localhost: GRANT ALL PRIVILEGES ON . TO ‘admin’@‘localhost’ WITH GRANT OPTION

1 row in set (0.00 sec)

revoke :回收权限

mysql> revoke PROCESS ON . FROM admin@‘localhost’;

#刷新权限

mysql> flush privileges;

2. 删除 mysql 用户

drop user admin@‘localhost’;

3. 修改 mysql 用户密码

修改用户密码的方式包括以下三种:

– 第一种

ALTER USER ‘chenhh’@‘localhost’ IDENTIFIED BY ‘mypassword’;

– 第二种

SET PASSWORD FOR ‘chenhh’@‘localhost’ = PASSWORD(‘mypassword’);

– 第三种

GRANT USAGE ON . TO ‘chenhh’@‘localhost’ IDENTIFIED BY ‘mypassword’;

如在数据库外命令行中,通过:mysqladmin -u用户名 -p旧的密码 password 新密码

shell> mysqladmin -u user_name -h host_name password “new_password”

# 修改当前会话本身用户密码的方式包括:

– 第一种

ALTER USER USER() IDENTIFIED BY ‘mypassword’;

– 第二种

SET PASSWORD = PASSWORD(‘mypassword’);

4. 忘记密码

1> 添加登录跳过权限检查配置

修改my.cnf,在mysqld配置节点添加skip-grant-tables配置

[mysqld]

skip-grant-tables

2> 重新启动mysql服务

shell> service mysqld restart

3> 修改密码

– 第一种

ALTER USER ‘chenhh’@‘localhost’ IDENTIFIED BY ‘mypassword’;

– 第二种

SET PASSWORD FOR ‘chenhh’@‘localhost’ = PASSWORD(‘mypassword’);

– 第三种

GRANT USAGE ON . TO ‘chenhh’@‘localhost’ IDENTIFIED BY ‘mypassword’;

5. 设置MySQL用户密码过期策略

设置系统参数default_password_lifetime作用于所有的用户账户,修改my.cnf系统文件重启MySQL即可

[mysqld]

default_password_lifetime=90

#default_password_lifetime=180 设置180天过期

#default_password_lifetime=0 设置密码不过期

如果为每个用户设置了密码过期策略,则会覆盖上述系统参数,设置方式如下:

– 90天过期

ALTER USER ‘chenhh’@‘localhost’ PASSWORD EXPIRE INTERVAL 90 DAY;

– 密码不过期

ALTER USER ‘chenhh’@‘localhost’ PASSWORD EXPIRE NEVER;

– 默认过期策略

ALTER USER ‘chenhh’@‘localhost’ PASSWORD EXPIRE DEFAULT;

手动强制某个用户密码过期

ALTER USER ‘chenhh’@‘localhost’ PASSWORD EXPIRE;

6. mysql 用户 lock

通过执行create user/alter user命令中带account lock/unlock子句设置用户的lock状态

Create user语句默认的用户是unlock状态

创建的时候给用户锁定方式

create user chenhh@localhost identified by ‘mysql’ account lock;

Alter user语句默认不会修改用户的lock/unlock状态

# 修改用户为unlock

alter user chenhh@‘localhost’ account unlock;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后,附一张自己面试前准备的脑图:

image

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典

  • Java核心知识整理

image

  • Spring全家桶(实战系列)

image.png

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

image

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
Java核心知识整理

[外链图片转存中…(img-x198IcZ3-1712265874650)]

  • Spring全家桶(实战系列)

[外链图片转存中…(img-6dGzjbTa-1712265874650)]

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

[外链图片转存中…(img-LnGIYPLO-1712265874651)]

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值