数据库默认的是只能在本地本机进行登录,登录数据库后,执行 ​select user,host from mysql.user; ​命令可查看​(如下图)​。

数据库用户和权限练习_db数据库

    要想远程登录某一台主机的数据库,我们需要通过创建账号并进行授权来实现。本次实验笔者将演示如何将数据库授权给magedu用户,允许192.168.1.0/24网段可以连接mysql。

  1. 创建用户

    登录数据库后,执行 ​create user magedu@'192.168.1.%' identified by '123456';​ 命令创建名为magedu的用户,同时设置密*码123456。此时查看数据库中的用户,已生成magedu用户​(如下图)​。

数据库用户和权限练习_db数据库_02


  1. 网段用户连接

    重新开启一台在192.168.1.0/24网段的虚拟机,为避免出现数据不兼容等问题,建议新开启的虚拟机上也下载与数据库原主机相同的版本,开启服务后,执行 ​mysql -umagedu -p123456 -h192.168.1.153​ 命令即可登录数据库,其中,需要使用-h跟上数据库原主机的地址​(如下图)​。

数据库用户和权限练习_db数据库_03

    但是查看有哪些数据库时,只显示了最基本的information_schema,而没有数据库原主机中的mysql、hellodb和performance_schema​(如下图)​。

数据库用户和权限练习_mysql_04

数据库用户和权限练习_db数据库_05


  1. 数据库权限设置

    要想让网段内的主机通过指定用户和密*码登录,并能够查看某些数据库或者进行数据库内容的查看、变动等,还需开放权限。

    例如数据库原主机想让网段内的主机登录后,可对hellodb数据库进行增删改查等所有操作,可执行 ​grant all privileges on hellodb.* to 'magedu'@'192.168.1.%'; ​命令,同时更新权限,网段内主机再次查看已有hellodb数据库​(如下图)​。

数据库用户和权限练习_db数据库_06

数据库用户和权限练习_mysql_07


  1. 网段内主机测试

    根据上面授予的权限,网段内主机在hellodb数据库的students表中加入一条johnny的信息,此时查看表,已经添加进去,在数据库原主机上查看该表也能看到新增加的内容​(如下图)​。

数据库用户和权限练习_数据库_08

数据库用户和权限练习_数据库_09

数据库用户和权限练习_数据库_10

    ​show grants for user@host​ 命令可以查看指定网段内的用户有哪些权限,如果想取消网段内用户对某一个数据的某些权限,需要用到revoke,以上面的hellodb数据库为例,假如要取消magedu用户对该数据库的所有权限,执行 ​revoke all on hellodb.* from magedu@'192.168.1.%'; ​命令即可,如果只是想取消对hellodb数据库中的某一个表的权限,将*改为具体表名即可。笔者这边取消的是magedu用户对hellodb数据的所有权限,执行命令后更新权限,网段内主机再次登录时已不显示hellodb数据库​(如下图)​。

数据库用户和权限练习_db数据库_11

数据库用户和权限练习_数据库_12

    在此篇开始的时候,笔者提到了如何查看数据库中的用户,如果想要删除用户,使用 ​drop user user@host​ 命令即可,例如现在要删除magedu用户,执行 ​drop user magedu@'192.168.1.%';​ 命令,此时网段内的用户再通过之前的用户名和密*码已无法登录​(如下图)​。

数据库用户和权限练习_mysql_13

数据库用户和权限练习_mysql_14