用户权限及验证逻辑讲解
说到用户权限,这在MySQL的管理中非常实用,它可以避免很多用户误操作产生的故障。
在MySQL中管理用户可以让你控制什么用户可以做什么,不能做什么。
创建具有不同权限的用户帐号。
避免使用root帐号,约束权限以免损害应用程序,可以在日常维护过程中避免出现错误。因为root权限最大,几乎所有约束对其无效,导致一些操作失误的告警不会出现。从而在一些误操作的时候不受限制,从而损害系统。
通过适当分配个人用户权限,确保数据完整性。允许授权用户做他们的工作。防止未经授权的用户访问超出其权限的数据。
那么我们是如何验证呢?
当你连接到MySQL服务器并执行查询时,它会对你进行身份验证并授权你的活动。
第一步身份验证:验证用户的身份,这是访问控制的第一阶段。每次连接时都必须成功地进行身份验证。如果身份验证失败,则连接失败,客户端断开连接。
第二步授权:验证用户的权限,访问控制的第二阶段发生在经过身份验证的连接上的每个请求。MySQL先查看你要执行什么操作,然后查看是否有足够的权限执行该操作。如下图:
逻辑流程图
当我们作为用户如何查看用户帐号设置?
查询mysql数据库,查看用户身份信息,输入以下
mysql> SELECT user, host, authentication_string FROM mysql.user;
每一行标识一个帐户,标识帐户的字段包括该帐户上的用户名,用户可以连接的DNS主机名或IP地址,用户必须为该帐户提供的密码,根据帐户身份验证插件实现的方案加密。简单地说就是验证三样:用户名,主机名,验证字符串。
在使用mysql_native_password插件连接时,MySQL使用三个标准来验证帐户,用户名,密码和客户端主机。当指定主机名时,请记住正确的顺序,即使用客户端连接时指定服务器的主机名,且在向服务器添加用户时指定客户端的主机名。
在做本地认证的时候,当要使用mysql客户端连接到本地服务器,请指定要使用的帐户的用户名和密码: mysql -u username -ppassword -h localhost
默认的主机名是localhost
默认的主机名表明是本地连接,而不是DNS本地主机的同义词的127.0.0.1连接。
说完本地认证,那么远程认证怎么做呢?若要连接到未安装在客户端本地主机上的服务器,请提供要连接到的服务器的主机名mysql -u username -ppassword -h servername
这个服务器的主机名是mysql中与用户关联的主机名。用户表指的是正在连接的客户端主机的名称,而不是服务器主机。mysql用户表包含用户名帐户和客户端的主机名或IP地址,以及正确的密码,客户端在连接时指定服务器的主机名或IP地址。