开门见山
MySQL的启动配置选项由三部分组成:预编译选项、命令行选项、配置文件选项。默认情况下,MySQL服务器使用预编译选项作为其启动参数,若默认选项不适合部署要求,则可以配置命令行选项或配置文件选项。命令:
mysqld --verbose --help
可以查看mysqld服务进程支持的选项。
使用配置文件可以做到永久保存相关配置而不需要每次启动MySQL时指定,可减少诸多繁琐的操作和出错概率。因而,配置文件是多数DBA在进行MySQL管理时的首选。下面将详细介绍MySQL的配置文件以及相关配置工具。
Option File Groups—配置文件组
以其他所有系统的配置文件一样,MySQL的配置文件以配置组形式存在,组名以[group_name]区分。组名为所配置的应用程序名(如mysql、mysqld等)或应用程序类(如client、server等),其示意图如下:
client组:针对所有客户端程序(如mysql、mysqldump)生效;
server组:针对所有服务端程序(如mysqld、mysqld_safe)生效;
Option File Locations—配置文件位置
MySQL针对不同的OS(windows、类UNIX)在其标准位置查找配置文件,类UNIX下标准配置文件为my.cnf、windows下标准配置文件为my.ini。具体搜索位置可以使用如下命令查看:
mysqld --help --verbose 2> /dev/null | grep -A1 "Default options"
说明:grep –A1表示匹配到字符串后,追加打印1行字符。
MySQL Startup Options启动选项
mysqld的启动选项主要包括如下几类:日志记录Logging、默认存储引擎default storage engine、系统变量system variables、共享内存Shared memory(windows)、命名管道链接Named Pipe Connections(windows)等。如开启MySQL的binlog、general log、slow query log,可配置如下:
# ----zavier 20190720 binlog
server-id = 1
log_bin = /var/lib/mysql/binlog/binlog
expire_logs_days = 1
max_binlog_size = 60M
# ----zavier 20190720 general log
general_log = 1
general_log_file = /var/lib/mysql/otherlog/general.log
# ----zavier 20190720 slow log
slow_query_log=on
slow_query_log_file = /var/lib/mysql/otherlog/slow.log
long_query_time = 2
log-queries-not-using-indexes
Displaying Options from Option Files显示配置文件中的选项
MySQL提供相关命令(my_print_defaults)可显示当前配置文件中的选项,使用方式:
my_print_defaults [options] option_group
也可使用应用程序的--print-defaults选项显示此信息,如下:
jwlLinux jwllinux # mysqld --print-defaults
mysqld would have been started with the following arguments:
--federated --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --basedir=/usr --datadir=/var/lib/mysql --tmpdir=/tmp --lc-messages-dir=/usr/share/mysql --skip-external-locking --secure_file_priv= --bind-address=0.0.0.0 --key_buffer_size=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover-options=BACKUP --query_cache_limit=1M --query_cache_size=16M --log_error=/var/log/mysql/error.log --server-id=1 --log_bin=/var/lib/mysql/binlog/binlog --expire_logs_days=1 --max_binlog_size=60M --general_log=1 --general_log_file=/var/lib/mysql/otherlog/general.log --slow_query_log=on --slow_query_log_file=/var/lib/mysql/otherlog/slow.log --long_query_time=2 --log-queries-not-using-indexes
创建加密的配置文件
在使用mysql客户端时,我们常常需要指定用户名和密码以登录到mysql服务器(如 mysql -u root -p),根据上述描述,我们可以在[mysql]或[client]配置组中配置user和password,以便实现伪造的“免密登录”,如下:
jwlLinux ~ # cat /etc/mysql/conf.d/mysql.cnf
[mysql]
# add by zavier 20190720
user=root
password=root
show-warnings
jwlLinux ~
但是,此配置文件以明文方式存储密码,存在安全风险。因而,MySQL提供mysql_config_editor命令配置加密的登录选项,此命令在当前用户的HOME目录创建加密的登录选项配置文件,并将相关配置封装成密文存储其中。如下:
这样,用户就可以快速登录到mysql 了:
总结
MySQL配置文件可以方便/永久的记录你所需要的相关服务选项,灵活的使用配置文件及相关工具可以方便的管理MySQL服务,进而提升管理效率。