连接器
连接器负责跟客户端建立连接、获取权限、维持和管理连接。
mysql -h$ip -P$port -u$user -p
- TCP握手
- 验证身份
- 不对,返回“Access denied for user”
- 通过,连接器会到权限表查询拥有的权限
一个用户成功建立连接后,即使用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。
通过show processlist命令可以查看连接。建立连接后客户端如果太长时间(参数wait_timeout控制,默认8小时)没有动静,连接器会自动断开连接。
问题:MySQL在执行过程中临时使用的内存是管理在连接对象的,这些资源在断开时才会释放。所以如果长连接太多,可能导致内存占用太大,被系统强行杀掉。
- 定期断开长连接
- MySQL 5.7或之后版本,执行一个较大操作后,执行mysql_reset_connection来重新初始化连接资源。
分析器
- 词法分析,识别SQL语句中的字符串分别代表什么
- 语法分析,根据语法规则判断SQL语句是否满足MySQL语法