MySQL在Linux环境下的配置过程看似繁琐,但只要理清几个核心概念,就能快速上手。下面我们从程序组成开始逐步梳理。
1. MySQL程序
1.1 MySQL程序简介
安装完MySQL之后,通常会附带以下几类程序。在Linux系统中,这些程序通常位于/usr/bin目录,通过一条命令即可查看:
ll /usr/bin/mysql*

这其中,MySQL程序可以清晰地分为两类:服务端和客户端,各自承担不同的职责。

2. mysqld与mysql
2.1 mysqld介绍
mysqld就是常说的MySQL服务器,它是一个多线程程序,核心职责是管理数据目录——该目录存放着所有数据库、表,以及日志文件和状态文件。服务器启动后,会侦听指定端口,处理来自客户端程序的网络连接,并协调不同客户端对数据库的访问。

2.2 mysql客户端
2.2.1 mysql客户端介绍
mysql是一个简单的SQL shell,既能输入命令,也能执行SQL语句。查询结果会以ASCII表格形式展示,非常直观。下面演示一下连接方式:
# 长选项格式 mysql --user=user_name --password [db_name] # 短选项格式 mysql -uuser_name -p [db_name]
2.2.2 mysql常用选项
常用选项的对照关系如下:


参照上述说明,下面演示几个常用示例:
mysql --version

mysql --database=test

可以看到,这里直接指定了要操作的数据库,登录后就可以直接执行show tables。为什么没有输入-uroot -p?原因是配置文件已经预设好了,后面会详细讲解。
mysql --execute="查询语句" --database=数据库名 ......

这是通过--execute直接执行查询语句,当然也需要指定数据库。
一些注意事项:
选项命名规则中有几个关键点:
- 单破折号与双破折号的大小写区分需要留意
- 双破折号后要加
=号,单破折号则用空格隔开 - 指定密码时,短格式的
-p和密码之间不能有空格:mysql -p12345表示指定密码,而mysql -p 12345则表示指定数据库名为12345 - 大多数情况下,选项名称中的破折号( - )和下划线( _ )可以互换使用,比如
--skip-grant-tables和--skip_grant_tables是等价的 - 数值选项可以带后缀K、M或G,分别表示1024、1024²或1024³的倍数
举例来说,以下命令告诉mysqladmin对服务器执行1024次ping,每次间隔3秒:
mysqladmin --count=1K --sleep=3 ping -uroot -p
3. 选项配置文件
3.1 选项配置文件介绍
大多数MySQL程序都可以从选项文件(即配置文件)中读取启动选项。这样一来,常用的配置只需要写一次,而不必每次启动都在命令行中重复输入。
使用方法上,可以通过--defaults-file指定要使用的配置文件。客户端程序会读取并应用该文件中的相关配置,当然,配置妥当后系统会自动加载。
配置文件的默认路径如下:

也就是说,路径在/etc/mysql目录下。
这里有一个细节:mysql.cnf是默认的配置文件,但我们通常不直接操作它,而是修改my.cnf。MySQL服务启动时会自动加载my.cnf,而它实际上是一个软链接,指向最终的配置文件。

此外,还有专门用于服务端的mysqld.cnf:

以及用于客户端的mysql.cnf:

虽然做了这些区分,但一般修改都是在默认配置文件my.cnf中进行,其他两个端作为补充。
这么多配置文件,读取顺序是怎样的?

文件读取顺序是从上到下,但影响效果正好相反——越靠后的文件,优先级越高。~表示当前用户的主目录,MYSQL_HOME是环境变量路径,DATADIR代表MySQL数据目录。
3.2 选项配置文件使用
使用选项配置文件之前,需要了解它的语法规则:
- 选项文件中指定选项时,省略两个前导破折号,每行表示一个选项。例如,
--quick和--host=127.0.0.1应写成quick和host=127.0.0.1- 注释行以
#或;开头,也可以从一行的中间开始[group]用于设置程序或组的名称,不区分大小写。如果组名与程序名相同,则该组中的选项专门应用于该程序,例如[mysqld]和[mysql]分别适用于服务端和客户端opt_name = value的格式与命令行选项名对应
下面直接看操作:
vim my.cnf

这里操作的是[client]组,定义了用户和密码两个选项。配置好后保存退出,客户端就能自动使用这些设置。[client]组适用于所有MySQL发行版中的客户端程序(除mysqld外),可以在此指定通用的用户和密码——当然要确保只有自己可以访问这个文件,以防密码泄漏。
关于!includedir的作用:
动态加载目录下的配置文件。
MySQL在启动时自动读取!includedir指定的目录,加载该目录下所有以.cnf结尾的文件,并将它们的配置合并到主配置文件my.cnf中。
4. 总结
本文梳理了Linux下MySQL的配置选项,包括程序的基本组成、mysqld与mysql客户端的功能及常用选项,以及选项配置文件的使用方法。通过命令行和配置文件两种方式,可以灵活配置MySQL的连接、查询和参数管理。文中还详细解释了配置文件的读取顺序、语法规则,以及如何通过!includedir动态加载目录下的配置文件。掌握这些内容,基本上就能应对日常的MySQL配置需求了。
