init_connect 参数用于在新连接被建立时执行一些初始化 SQL 语句,如 SET NAMES utf8。在 MySQL 中,字符集是一项非常重要的配置,因为不同的字符集会影响到数据的存储和检索。当客户端与 MySQL 服务器建立连接时,会根据客户端的字符集设置来确定数据的编码格式。因此,为了确保客户端和服务器之间的字符集一致性,我们需要在每个新连接被建立时,设置正确的字符集。
在 MySQL 中,使用 SET NAMES 命令可以设置字符集,它可以将客户端发送的数据编码转换为服务器使用的编码格式。因此,我们可以通过设置 init_connect 参数,来确保在每个新连接被建立时,都会自动执行 SET NAMES 命令来设置正确的字符集。
底层原理是,当 MySQL 服务器接收到新的客户端连接时,会根据 init_connect 参数中指定的 SQL 语句来初始化连接。如果设置了 init_connect='SET NAMES utf8',那么每个新连接都会自动执行 SET NAMES utf8 命令来设置字符集为 utf8,以保证客户端和服务器之间的字符集一致性。