MySQL OCP888题解071-干净关闭MySQL服务器
文章目录
- 1、原题
- 1.1、英文原题
- 1.2、答案
- 2、题目解析
- 2.1、题干解析
- 2.2、选项解析
- 3、知识点
- 3.1、知识点1:mysqladmin——MySQL服务器管理程序
- 3.1.1、mysqladmin概要介绍
- 3.1.2、mysqladmin支持的命令
- 3.1.3、mysqladmin支持的选项
- 3.2、知识点2:MySQL的安装布局
- 3.3、知识点3:mysql.server MySQL服务器启动脚本
- 3.4、知识点4:mysqld_safe MySQL服务器启动脚本
- 4、总结
1、原题
1.1、英文原题
1.2、答案
C、D
2、题目解析
2.1、题干解析
本题考察mysqladmin和mysql服务器的知识。
2.2、选项解析
- mysqld_safe是在Unix上启动mysqld服务器的推荐方式,在Linux上没有,所以选项A错误。
- Unix和类Unix系统上的MySQL发行版包括一个名为mysql.server的脚本,它使用mysqld_safe启动MySQL服务器。如果你使用Linux服务器RPM包(MySQL-server-VERSION.rpm),或本地Linux包安装,mysql.server脚本可以安装在/etc/init.d目录下,名称为mysqld或mysql。可以通过mysql.server脚本启停MySQL服务器。所以选项C正确。
- mysqladmin支持通过shutdown关闭MySQL服务器,因此选项D正确。
3、知识点
3.1、知识点1:mysqladmin——MySQL服务器管理程序
官方参考文档
3.1.1、mysqladmin概要介绍
mysqladmin是一个用于执行管理操作的客户端。你可以用它来检查服务器的配置和当前状态,创建和删除数据库,以及更多。像这样调用mysqladmin:
mysqladmin [options] command [command-arg] [command [command-arg]] ...
3.1.2、mysqladmin支持的命令
- mysqladmin支持以下命令。一些命令在命令名称后面需要一个参数:
- create db_name:创建一个名为db_name的新数据库。
- debug:告诉服务器将调试信息写到错误日志中。连接的用户必须有SUPER权限。该
- drop db_name:删除名为db_name的数据库和它的所有表。
- extended-status:显示服务器状态变量和它们的值。
- flush-hosts:冲刷主机缓存中的所有信息。
- flush-logs [log_type …冲刷所有日志。mysqladmin flush-logs命令允许给出可选的日志类型,以指定要冲洗哪些日志。在flush-logs命令之后,你可以提供一个以空格分隔的列表,包括以下一个或多个日志类型:binary, engine, error, general, relay, slow。
- flush-privileges:重新加载授予表(与reload相同)。
- flush-status:清除状态变量。
- flush-tables:冲刷所有表。
- flush-threads:冲刷线程缓存。
- kill id,id,…:杀死服务器线程。如果给出了多个线程ID值,列表中不能有空格。要杀死属于其他用户的线程,连接的用户必须有SUPER权限。
- old-password new_password:这与密码命令相似,但使用旧的(4.1之前)密码隐藏格式来存储密码。这个命令在MySQL 5.7.5中被删除。
- password new_password:设置一个新的密码。这将把你使用mysqladmin连接到服务器的账户的密码改为new_password。因此,当你下次使用同一账户调用mysqladmin(或任何其他客户端程序)时,你必须指定新的密码。使用mysqladmin设置密码应该被认为是不安全的。
- 如果new_password值包含空格或其他对你的命令解释器来说是特殊的字符,你需要用引号把它括起来。在Windows上,一定要使用双引号,而不是单引号;单引号不会从密码中剥离,而是被解释为密码的一部分。比如说:mysqladmin password “my new password”
- 新的密码可以在密码命令后面省略。在这种情况下,mysqladmin会提示密码值,这使你能够避免在命令行中指定密码。只有当password是mysqladmin命令行上的最后一条命令时,才应省略密码值。否则,下一个参数将被作为密码。
- ping:检查服务器是否可用。如果服务器正在运行,mysqladmin的返回状态为0,如果不运行则为1。即使在出现Access denied这样的错误时也是0,因为这意味着服务器在运行但拒绝连接,这与服务器不运行是不同的。
- processlist:显示活动的服务器线程的列表。这就像SHOW PROCESSLIST语句的输出。如果给出了–verbose选项,输出就像SHOW FULL PROCESSLIST一样。
- reload:重新加载Grant表。
- refresh:冲刷所有的表,关闭和打开日志文件。
- shutdown:停止服务器。所以选项D是正确的。
- start-slave:在一个复制服务器上启动复制。
- status:显示一个简短的服务器状态信息。
- stop-slave:在一个复制服务器上停止复制。
- variables:显示服务器的系统变量和它们的值。
- version:显示来自服务器的版本信息。
3.1.3、mysqladmin支持的选项
mysqladmin支持下列选项,这些选项可以在命令行中或在选项文件的[mysqladmin]和[client]组中指定:
- –help,-?:显示一个帮助信息并退出。
- –bind-address=ip_address:在有多个网络接口的计算机上,使用该选项选择用于连接MySQL服务器的接口。
- –character-sets-dir=dir_name:安装字符集的目录。
- –compress, --C:如果可能的话,压缩客户端和服务器之间发送的所有信息。
- –connect-timeout=value:连接超时前的最大秒数。默认值是43200(12小时)。
- –count=N, -c N:如果给定了–sleep选项,为重复执行命令所做的迭代次数。
- –debug[=debug_options], -# [debug_options] :写一个调试日志。一个典型的debug_options字符串是d:t:o,file_name。默认是d:t:o,/tmp/mysqladmin.trace。这个选项只有在使用WITH_DEBUG构建MySQL时才可用。甲骨文公司提供的MySQL发行版二进制文件不使用此选项构建。
- –debug-check:在程序退出时打印一些调试信息。这个选项只有在使用WITH_DEBUG构建MySQL时才可用。甲骨文公司提供的MySQL发行版二进制文件不使用此选项构建。
- –debug-info:在程序退出时打印调试信息以及内存和CPU的使用统计。这个选项只有在使用WITH_DEBUG构建MySQL时才可用。甲骨文公司提供的MySQL发行版二进制文件不使用此选项构建。
- –default-auth=plugin:关于使用哪个客户端认证插件的提示。
- –default-character-set=charset_name:使用charset_name作为默认字符集。
- –defaults-extra-file=file_name:在全局选项文件之后,但(在Unix中)在用户选项文件之前读取这个选项文件。如果该文件不存在或无法访问,就会发生错误。如果file_name不是一个绝对路径名,它将被解释为与当前目录相对。
- –defaults-file=file_name:只使用给定的选项文件。如果该文件不存在或无法访问,会发生错误。如果file_name不是一个绝对路径名,它将被解释为相对于当前目录。
- –defaults-group-suffix=str:不仅读取通常的选项组,而且还读取具有通常名称和后缀str的组。例如,mysqladmin通常读取【client】和【mysqladmin】组。如果这个选项被赋予–defaults-group-suffix=
_other
,mysqladmin也会读取[client_other]
和[mysqladmin_other]
组。 - –enable-cleartext-plugin:启用mysql_clear_password明文认证插件。
- –force, --f:不要求对drop db_name命令进行确认。对于多个命令,即使发生错误也要继续。
- –get-server-public-key:向服务器请求基于RSA密钥对的密码交换所需的公钥。这个选项适用于使用caching_sha2_password认证插件进行认证的客户端。对于该插件,除非要求,否则服务器不会发送公钥。对于不使用该插件进行认证的账户,该选项被忽略。如果不使用基于RSA的密码交换,它也会被忽略,就像客户端使用安全连接连接到服务器时的情况。如果给出了–server-public-key-path=file_name,并且指定了一个有效的公钥文件,它将优先于–get-server-public-key。
- –host=host_name, -h host_name:连接到指定主机上的MySQL服务器。
- –login-path=name:从.mylogin.cnf登录路径文件中的指定登录路径中读取选项。一个 "登录路径 "是一个选项组,包含指定连接哪个MySQL服务器和以哪个账户进行验证的选项。
- –no-beep, -b:抑制默认情况下对错误(如连接服务器失败)发出的警告声。
- –no-defaults:不读取任何选项文件。如果程序启动失败是由于从选项文件中读取了未知的选项,可以用–no-defaults来阻止它们被读取。例外的情况是,如果.mylogin.cnf文件存在,在任何情况下都会被读取。这样,即使在使用–no-defaults的情况下,也可以用比在命令行上更安全的方式指定密码。
- –password[=password], -p[password]:用于连接到服务器的MySQL帐户的密码。密码值是可选的。如果没有给出,mysqladmin会提示输入密码。如果给出,–password=或-p与后面的密码之间不能有空格。如果没有指定密码选项,默认为不发送密码。
- –pipe,-W:在Windows中,使用命名管道连接到服务器。这个选项只有在服务器启动时启用了named_pipe系统变量以支持命名管道连接时才适用。此外,进行连接的用户必须是由named_pipe_full_access_group系统变量指定的Windows组的成员。
- –plugin-dir=dir_name:寻找插件的目录。如果使用–default-auth选项指定一个认证插件,但mysqladmin没有找到它,则指定这个选项。
- –port=port_num, -P port_num:对于TCP/IP连接,要使用的端口号。
- –print-defaults:打印程序名称和它从选项文件中获得的所有选项。
- –protocol={TCP|SOCKET|PIPE|MEMORY}:连接到服务器时使用的传输协议。当其他连接参数通常会导致使用你想要的协议之外的协议时,它是有用的。
- –relative,-r:当与–sleep选项一起使用时,显示当前值和之前值之间的差异。这个选项只在扩展状态命令中起作用。
- –show-warnings:显示因执行发送到服务器的语句而产生的警告。
- –secure-auth:不要向服务器发送旧的(4.1以前)格式的密码。这可以防止连接,除非是使用较新密码格式的服务器。从MySQL 5.7.5开始,这个选项已被废弃;预计它将在未来的MySQL版本中被删除。它总是被启用,试图禁用它(–skip-secure-auth,–secure-auth=0)会产生一个错误。在MySQL 5.7.5之前,该选项默认是启用的,但可以禁用。
- –server-public-key-path=file_name: PEM格式文件的路径名称,该文件包含服务器为基于RSA密钥对的密码交换而要求的客户端公钥副本。该选项适用于使用sha256_password或caching_sha2_password认证插件进行认证的客户端。对于不使用这些插件进行认证的账户,该选项被忽略。如果不使用基于RSA的密码交换,它也会被忽略,就像客户端使用安全连接连接到服务器时的情况。如果给出了–server-public-key-path=file_name,并指定了一个有效的公钥文件,它将优先于–get-server-public-key。对于sha256_password,该选项仅在MySQL使用OpenSSL构建时适用。在MySQL 5.7.23中增加了 --server-public-key-path选项。
- –shared-memory-base-name=name:在Windows中,共享内存的名称,用于使用共享内存与本地服务器的连接。默认值是MYSQL。共享内存的名称是区分大小写的。这个选项只适用于服务器在启动时启用了shared_memory系统变量以支持共享内存连接。
- –shutdown-timeout=value:等待服务器关闭的最大秒数。默认值是3600(1小时)。
- –silent,-s:如果不能建立与服务器的连接,则默默退出。
- –sleep=delay, -i delay:反复执行命令,中间有延迟秒数的睡眠。–count选项决定了迭代的数量。如果没有给出–count,mysqladmin将无限期地执行命令,直到被打断。
- –socket=path, -S path:对于与localhost的连接,要使用Unix套接字文件,或者在Windows上,要使用命名的管道名称。在Windows中,只有当服务器在启动时启用了named_pipe系统变量以支持命名管道连接时,这个选项才适用。此外,进行连接的用户必须是由named_pipe_full_access_group系统变量指定的Windows组的成员。
- –ssl
*
:以 --ssl 开头的选项指定是否使用加密方式连接到服务器,并指出在哪里可以找到SSL密钥和证书。 - –tls-version=protocol_list:用于加密连接的允许的TLS协议。该值是一个由一个或多个逗号分隔的协议名称组成的列表。可为该选项命名的协议取决于用于编译MySQL的SSL库。这个选项是在MySQL 5.7.10中添加的。
- –user=user_name, -u user_name:用于连接到服务器的MySQL账户的用户名。
- –verbose, -v:详细模式。
- –version, -V:显示版本信息并退出。
- –vertical, -E:垂直打印输出。这与–relative类似,但是垂直打印输出。
- –wait[=count], -w[count]:如果连接不能建立,等待并重试,而不是放弃。如果给了一个计数值,它表示重试的次数。默认是一次。
3.2、知识点2:MySQL的安装布局
官方参考文档
- 客户端程序和脚本:/usr/bin
- mysqld服务器:/usr/sbin
- 数据目录:/var/lib/mysql
- 异常日志文件:
- 对于RHEL, Oracle Linux, or CentOS:/var/lib/mysql/host_name.err
- 对于SLES: /var/log/mysql/mysqld.log
- 系统V的启动脚本:/etc/init.d/mysql
- Systemd服务:mysql
- Pid文件:/var/lib/mysql/host_name.pid
- Unix用户手册:/usr/share/man
- 头文件:/usr/include/mysql
- 库文件:/usr/lib/mysql
- Socket文件:/var/lib/mysql/mysql.sock
- 杂项支持文件(例如,错误信息,和字符集文件):/usr/share/mysql
3.3、知识点3:mysql.server MySQL服务器启动脚本
Unix和类Unix系统上的MySQL发行版包括一个名为mysql.server的脚本,它使用mysqld_safe启动MySQL服务器。要使用mysql.server脚本手动启动或停止服务器,请在命令行中用start或stop参数调用它。
mysql.server start
mysql.server stop:mysql.server stop通过向服务器发送一个信号来停止它。你也可以通过执行mysqladmin shutdown来手动停止服务器。
如果你使用Linux服务器RPM包(MySQL-server-VERSION.rpm),或本地Linux包安装,mysql.server脚本可以安装在/etc/init.d目录下,名称为mysqld或mysql。
mysql.server从选项文件的[mysql.server]和[mysqld]部分读取选项。为了向后兼容,它也会读取[mysql_server]部分。
mysql.server脚本支持下表中所示的选项。如果指定,它们必须放在选项文件中,而不是在命令行中。mysql.server只支持start和stop作为命令行参数。
- basedir=dir_name:到MySQL安装目录的路径。
- datadir=dir_name:到MySQL数据目录的路径。
- pid-file=file_name:服务器应在其中写入其进程ID的文件的路径名称。服务器在数据目录中创建该文件,除非给出绝对路径名以指定一个不同的目录。如果没有给出这个选项,mysql.server使用默认值host_name.pid。传递给mysqld_safe的PID文件值覆盖了[mysqld_safe]选项文件组中指定的任何值。因为mysql.server读取[mysqld]选项文件组,而不是[mysqld_safe]组,你可以通过在[mysqld_safe]和[mysqld]组中放置相同的pid文件设置,确保mysqld_safe从mysql.server调用时获得与手动调用时相同的值。
- service-startup-timeout=seconds:等待确认服务器启动的时间,以秒为单位。如果服务器没有在这个时间内启动,mysql.server将以错误退出。默认值是900。值为0意味着完全不等待启动。负值意味着永远等待(没有超时)。
官方参考文档
3.4、知识点4:mysqld_safe MySQL服务器启动脚本
mysqld_safe是在Unix上启动mysqld服务器的推荐方式。mysqld_safe增加了一些安全特性,例如当发生错误时重新启动服务器,并将运行时信息记录到错误日志中。
- 对于一些Linux平台,从RPM或Debian软件包中安装的MySQL包括用于管理MySQL服务器启动和关闭的systemd支持。在这些平台上,mysqld_safe不被安装,因为它是不必要的。
- 在使用systemd管理服务器的平台上不使用mysqld_safe的一个影响是,不支持在选项文件中使用[mysqld_safe]或[safe_mysqld]部分,并可能导致意外行为。
官方参考文档
4、总结
- mysqld_safe是在Unix上启动mysqld服务器的推荐方式,在Linux上没有。
- Unix和类Unix系统上的MySQL发行版包括一个名为mysql.server的脚本,它使用mysqld_safe启动MySQL服务器。如果你使用Linux服务器RPM包(MySQL-server-VERSION.rpm),或本地Linux包安装,mysql.server脚本可以安装在/etc/init.d目录下,名称为mysqld或mysql。可以通过mysql.server脚本启停MySQL服务器。
- mysqladmin支持通过shutdown关闭MySQL服务器。