Mysql 用户管理、权限管理(含用户密码修改)

和Linux 系统一样,也有着自己独有的用户管理系统,MySQL所有的用户信息都被保存在mysql数据库中的user表中。


目录

1、用户信息

2、用户管理

(1) 创建用户

(2) 删除用户

(3) 修改用户密码

3、用户权限管理

(1) 赋予权限(grant)

(2) 回收权限(revoke)


1、用户信息

要管理用户,那就需要先了解 user 表的一些字段所代表的含义,实际上我们在管理用户权限的时候,本质就是在维护 user 表。下面列举出一些常见字段

host:表示该用户可以从哪个主机登录。

  • localhost :表示只能从本机登录。该用户无法远程登录。
  • % :表示可以从任意主机登录

user:表示用户名。

authentication_string:表示用户登录的密码。(经过加密了)

*_priv:以 priv 结尾的字段,均代表用户所具备的权限。Y表示具备该权限,N表示不具备该权限,图中的select_priv 表示用户是否具备查询权限。

2、用户管理

(1) 创建用户

Mysql 即便是创建了普通用户,也不能访问大部分数据,因此需要给新创建的普通用户赋权,即便身处皇家,也不代表能行使皇家权利。

语法格式:

create user '用户名'@'登陆主机/ip' identified by '密码'

示例:

-- 仅允许本机登录
create user 'gzx'@'localhost' identified by '12345678';

-- 允许来自任意IP的主机登录
create user 'gzx'@'%' identified by '12345678';

注意:如果出现 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,可以参考:修改密码策略

(2) 删除用户

语法:

-- 用户名对应user表中的字段user,主机名对应字段host
drop user '用户名'@'主机名'    

示例:

drop user 'gzx'@'%';

(3) 修改用户密码

修改密码本质修改的是user表中的密码字段,注意不同Mysql版本修改的字段不一样,5.6 版本设置的是password字段, 5.7版本设置的是authentication_string字段。

当前用户只能修改自己的密码,只有root用户才能修改指定用户的密码

语法:

-- 当前用户修改自己的密码
set password=password('新的密码');

-- root用户修改指定用户的密码
set password for '用户名'@'主机名'=password('新的密码');

示例:

set password for 'gzx'@'%'=password('gzx123');

3、用户权限管理

刚创建的用户没有任何权限。需要给用户授权。

(1) 赋予权限(grant)

语法:

grant 权限列表 on 库.对象名 to '用户名'@'主机名' [identified by '密码']
  • 权限列表:可以给某个用户赋予指定权限或者全部权限
    • all [ privileges ]:表示所有权限
    • select:表示查询权限
    • insert:表示插入权限

示例:

-- 仅赋予用户gzx 所有数据库和表的查询权限(赋予某一项指定权限)
grant select on *.* to 'gzx'@'%';

-- 赋予用户gzx 数据库mysql下所有表的查询权限(赋予某一个数据库的指定权限)
grant select on mysql.* to 'gzx'@'%';

-- 权限全开放(赋予所有数据库和表的全部权限)
grant all on *.* to 'gzx'@'%';

注意:每次修改权限以后,都要输入 flush privileges; 来刷新权限

(2) 回收权限(revoke)

语法:

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

示例:

-- 回收gzx对mysql数据库的所有权限
revoke all on mysql.* from 'gzx'@'%';

-- 回收gzx对所有数据库的全部权限
revoke all on *.* from 'gzx'@'%';

猜你喜欢

转载自blog.csdn.net/challenglistic/article/details/129228746