数据库默认的是只能在本地本机进行登录,登录数据库后,执行 select user,host from mysql.user; 命令可查看(如下图)。
要想远程登录某一台主机的数据库,我们需要通过创建账号并进行授权来实现。本次实验笔者将演示如何将数据库授权给magedu用户,允许192.168.1.0/24网段可以连接mysql。
- 创建用户
登录数据库后,执行 create user magedu@'192.168.1.%' identified by '123456'; 命令创建名为magedu的用户,同时设置密*码123456。此时查看数据库中的用户,已生成magedu用户(如下图)。
- 网段用户连接
重新开启一台在192.168.1.0/24网段的虚拟机,为避免出现数据不兼容等问题,建议新开启的虚拟机上也下载与数据库原主机相同的版本,开启服务后,执行 mysql -umagedu -p123456 -h192.168.1.153 命令即可登录数据库,其中,需要使用-h跟上数据库原主机的地址(如下图)。
但是查看有哪些数据库时,只显示了最基本的information_schema,而没有数据库原主机中的mysql、hellodb和performance_schema(如下图)。
- 数据库权限设置
要想让网段内的主机通过指定用户和密*码登录,并能够查看某些数据库或者进行数据库内容的查看、变动等,还需开放权限。
例如数据库原主机想让网段内的主机登录后,可对hellodb数据库进行增删改查等所有操作,可执行 grant all privileges on hellodb.* to 'magedu'@'192.168.1.%'; 命令,同时更新权限,网段内主机再次查看已有hellodb数据库(如下图)。
- 网段内主机测试
根据上面授予的权限,网段内主机在hellodb数据库的students表中加入一条johnny的信息,此时查看表,已经添加进去,在数据库原主机上查看该表也能看到新增加的内容(如下图)。
show grants for user@host 命令可以查看指定网段内的用户有哪些权限,如果想取消网段内用户对某一个数据的某些权限,需要用到revoke,以上面的hellodb数据库为例,假如要取消magedu用户对该数据库的所有权限,执行 revoke all on hellodb.* from magedu@'192.168.1.%'; 命令即可,如果只是想取消对hellodb数据库中的某一个表的权限,将*改为具体表名即可。笔者这边取消的是magedu用户对hellodb数据的所有权限,执行命令后更新权限,网段内主机再次登录时已不显示hellodb数据库(如下图)。
在此篇开始的时候,笔者提到了如何查看数据库中的用户,如果想要删除用户,使用 drop user user@host 命令即可,例如现在要删除magedu用户,执行 drop user magedu@'192.168.1.%'; 命令,此时网段内的用户再通过之前的用户名和密*码已无法登录(如下图)。