总结分享MySQL中的用户创建与权限管理

文 / @UTHEME

MySQL是一个广泛使用的关系型数据库管理系统,为了保证数据安全,MySQL中对用户创建和权限管理有严格的规定。在MySQL中,用户创建和权限管理都需要通过命令进行操作。

一、用户创建

MySQL中,用户的创建需要用到create user命令,基本语法如下:
mysql> create user '用户名'@'被允许连接的主机名称或主机的IP地址' identified by '用户密码';

举例来说,创建一个MySQL账号,用户名为'hhy',用户密码为'123',可以使用以下命令:
mysql> create user 'hhy'@'localhost' identified by '123';

另外,如果需要在远程主机上连接MySQL,需要在用户创建时指定要授权的远程主机的IP地址,例如:
mysql> create user 'test'@'192.1668.44.110' identified by '123';

当需要面向某个主机IP地址的网段进行开放时,可以使用通配符%,例如:
mysql> create user 'jack'@'192.168.44.%' identified by '123';

二、权限管理

为了保证数据安全,MySQL对权限管理有严格的规定,授权和回收权限都需要通过命令进行操作。

1.权限说明

MySQL中定义了很多种不同的权限,通过分配不同的权限,可以实现不同用户之间数据的保密性和互操作性。常见的权限包括:
USAGE:无权限,只能登录MySQL,只可以使用test或test_*数据库;
ALL:所有权限;
select/update/delete/super/replication slave/reload...:针对具体的操作;
with grant option选项:允许把自己的权限授予其它用户或者从其他用户收回自己的权限。

2.权限保存位置

所有mysql用户的账号和密码,以及用户对全库全表权限(*.*)都保存在mysql.user表中;非mysql库的授权都保存在mysql.db表中;某库某表的授权保存在mysql.table_priv表中;某库某表某列的授权保存在mysql.columns_prv表中;某库存储过程的授权保存在mysql.procs_priv表中。

3.给用户授权

为用户分配权限的语法如下:
mysql> grant 权限1,权限2 on 库.表 to 用户@主机;

例如,为hehanyu用户分配java数据库的查询权限,可以使用以下命令:
mysql> grant select on java.* to 'hehanyu'@'192.168.44.%';

还可以为用户分配更具体的权限,例如,为hehanyu用户分配java.tb_student数据表的更新权限(只能更改age字段),使用以下命令:
mysql> grant update(age) on java.tb_student to 'hehanyu'@'192.168.44.%';

4.查询用户权限

查询当前用户的权限,可以使用以下命令:
mysql> show grants;

查询其他用户权限的语法为:
mysql> show grants for '用户名'@'授权的主机名称或IP地址';

5.with grant option选项

当需要对下级用户进行授权时,可以使用with grant option选项,例如:
mysql> grant all on *.* to 'amy'@'10.1.1.%' identified by '123' with grant option;

如果没有使用with grant option选项,则该用户无法为其他用户授权。

6.revoke回收权限

如果需要回收某个用户的权限,可以使用revoke命令。如果需要回收指定的权限,语法如下:
mysql> revoke 权限 on 库.表 from 用户;

如果需要撤消所有的权限,可以使用以下命令:
mysql> revoke all on *.* from '用户名'@'授权的主机名称或IP地址';

通过权限管理,在多用户的系统中保证了数据的隔离性和安全性,也保证了系统的稳定性。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。