一条SQL查询语句是如何执行的?( 四 )

mysql -h$ip -P $port -u$user -p

输完命令之后 , 你就需要在交互对话里面输入密码 。 虽然密码也可以直接跟在 -p 后面写在命令行中 , 但这样可能会导致你的密码泄露 。 如果你连的是生产服务器 , 强烈建议你不要这么做 。

连接命令中的 mysql 是客户端工具 , 用来跟服务端建立连接 。 在完成经典的 TCP 握手后 , 连接器就要开始认证你的身份 , 这个时候用的就是你输入的用户名和密码 。

  • 如果用户名或密码不对 , 你就会收到一个\"Access denied for user\"的错误 , 然后客户端程序结束执行 。

  • 如果用户名密码认证通过 , 连接器会到权限表里面查出你拥有的权限 。 之后 , 这个连接里面的权限判断逻辑 , 都将依赖于此时读到的权限 。

这就意味着 , 一个用户成功建立连接后 , 即使你用管理员账号对这个用户的权限做了修改 , 也不会影响已经存在连接的权限 。 修改完成后 , 只有再新建的连接才会使用新的权限设置 。

推荐阅读