MySQL创建用户和授权以及重置密码修改密码

用户

创建用户

格式:

CREATE USER 用户名@'客户端地址' IDENTIFIED BY '密码';

实例:

/* '%'表示不限,类似于正则通配符'*' */

/*创建用户test1,密码123456,可以用任何ip上进行连接登录。*/
CREATE USER test1 IDENTIFIED BY '123456';

/*创建用户test1,密码123456,只能在192.168.0.100上进行连接登录。*/
CREATE USER test2@'192.168.0.100' IDENTIFIED BY '123456';

/*创建用户test1,密码123456,只能在192.168.0网段上的主机进行连接登录。*/
CREATE USER test3@'192.168.0.%' IDENTIFIED BY '123456';

/*创建用户test1,密码123456,可以用任何ip上进行连接登录。*/
CREATE USER test3@'%' IDENTIFIED BY '123456';

如果出现:ERROR 1396 (HY000): Operation CREATE USER failed for 'xxx'@'%'错误,则说明已经存在一个xxx用户了。

查询用户

 select user,host from mysql.user;

修改密码

/*重置root用户的密码为空字符串(即不要密码)*/
update mysql.user set authentication_string="" where user="root";
commit;
flush privileges;

mysql8必须使用下面代码来重设密码:

ALTER user 'root'@'localhost' IDENTIFIED BY 'ABcd123456@';//密码太简单会报错Your password does not satisfy the current policy requirements
flush privileges;

权限

授权

格式:

grant 权限1,权限2,权限n on 指定库.指定表 to 用户名@'客户端地址'

实例:

/*授予用户test_user,操作test_db.test_tb表的任何权限。*/
grant all privileges on test_db.test_tb to test_user;
flush privileges;

/*将replication slave权限和replication client权限授予slave用户,不限IP(@'%'),不限库(on *.*),不限表(on *.*)*/
grant replication slave,replication client on *.* to 'slave'@'%';
flush privileges;

用户授权后,该用户只有重新连接 MySQL 数据库,权限才能生效。

查询权限

查看当前用户(自己)权限:

show grants;

查看其他 MySQL 用户权限:

show grants for 用户名@'客户端地址';

修改权限

撤销权限使用revoke,跟grant的类似,只需要把关键字to换成from即可:

/*撤销用户test_user,操作test_db.test_tb表的任何权限。*/
revoke all on test_db.test_tb from test_user;

权限生效问题

执行grant,revoke,set password,rename user命令修改权限之后, MySQL会自动将修改后的权限信息同步加载到系统内存中

如果执行insert/update/delete操作上述的系统权限表之后,则必须再执行刷新权限命令才能同步到系统内存中,刷新权限命令包括: flush privileges/mysqladmin flush-privileges / mysqladmin reload

如果是修改tables和columns级别的权限,则客户端的下次操作新权限就会生效

如果是修改database级别的权限,则新权限在客户端执行use database命令后生效

如果是修改global级别的权限,则需要重新创建连接新权限才能生效

如果是修改global级别的权限,则需要重新创建连接新权限才能生效 (例如修改密码)

权限列表

在这里插入图片描述
在这里插入图片描述

赋权失败问题

使用root登录之后给自己赋权:

grant all on *.* to 'root'@'%';

报错:

ERROR 1410 (42000): You are not allowed to create a user with GRANT

原因:
因为当前用户虽然是root,但是是'root'@'localhost',所以没权限去赋权。

解决:

update user set host='%' where user='root';
flush privileges;
grant all on *.* to 'root'@'%';
flush privileges;

搞定!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值