6.4.2 mysql_secure_安装 — 提高MySQL安装安全性
这个程序允许您通过以下方式提高MySQL安装的安全性:
-
您可以为
root
帐户设置密码。 -
您可以删除可从外部主机访问的
root
帐户。 -
您可以删除匿名用户帐户。
-
您可以删除默认情况下任何用户都可以访问的
test
数据库,以及允许任何人访问以test_
开头命名的数据库的权限。
mysql_secure_安装 帮助您实施与Section 2.9.4, “Securing the Initial MySQL Account”
中描述的安全建议类似。
正常使用是连接到本地MySQL服务器;调用mysql_secure_安装没有参数:
mysql_secure_installation
当执行时,mysql_secure_安装会提示您确定要执行哪些操作。
`validate_password` 组件可以用于密码强度检查。如果插件未安装,mysql_secure_installation 会提示用户是否安装它。之后输入的任何密码都将使用插件进行检查,如果已启用的话。
大多数常见的MySQL客户端选项,如--host
和--port
,可以在命令行和选项文件中使用。例如,要连接到本地服务器并通过IPv6使用端口3307,可以使用以下命令:
mysql_secure_installation --host=::1 --port=3307
mysql_secure_installation 支持以下选项,可以在命令行或选项文件的`[mysql_secure_installation]`和`[client]`组中指定。关于MySQL程序使用的选项文件信息,请参阅第6.2.2.2节,“使用选项文件”。
表6.9 mysql_secure_installation 选项
Option Name | Description |
---|---|
--defaults-extra-file | 读取额外的命名选项文件,除了通常的选项文件之外 |
--defaults-file | 仅读取命名的选项文件 |
--defaults-group-suffix | 默认值组后缀值 |
--help | 显示帮助信息并退出 |
--host | MySQL服务器所在的主机 |
--no-defaults | 不读取任何选项文件 |
--password | 被接受但总是被忽略。无论如何,mysql_secure_installation都会提示用户输入密码 |
--port | 用于连接的TCP/IP端口号 |
--print-defaults | 打印默认值 |
--protocol | 使用的传输协议 |
--socket | 用于Unix套接字文件或Windows命名管道的路径 |
--ssl-ca | 包含受信任SSL证书颁发机构列表的文件 |
--ssl-capath | 包含信任的SSL证书颁发机构证书文件的目录 |
--ssl-cert | 包含X.509证书的文件 |
--ssl-cipher | 用于连接加密的可许可密码 |
--ssl-crl | 包含证书吊销列表的文件 |
--ssl-crlpath | 包含证书吊销列表文件的目录 |
--ssl-fips-mode | 是否启用FIPS模式(客户端) |
--ssl-key | 包含X.509密钥的文件 |
--ssl-mode | 连接到服务器时期望的安全状态 |
--ssl-session-data | 包含SSL会话数据的文件 |
--ssl-session-data-continue-on-failed-reuse | 如果会话重用失败是否继续建立连接 |
--tls-ciphersuites | 允许的TLSv1.3加密套件用于加密连接 |
--tls-sni-servername | 由客户端提供的服务器名称 |
--tls-version | 用于加密连接的允许TLS协议 |
--use-default | 使用默认设置执行,无需用户交互 |
--user | 连接到服务器时要使用的MySQL用户名 |
-
--help
,-
Command-Line Format --help
显示帮助信息并退出。
-
--defaults-extra-file=
file_name
Command-Line Format --defaults-extra-file=file_name
Type 文件名 在全局选项文件之后但在用户选项文件之前(在Unix上)读取这个选项文件。如果指定的文件不存在或无法访问,会发生错误。如果
file_name
不是绝对路径名,它将相对于当前目录解释。对于此选项文件及其它选项文件选项的更多信息,请参阅第6.2.2.3节,“影响选项文件处理的命令行选项”。
-
Command-Line Format --defaults-file=file_name
Type 文件名 只使用给定的选项文件。如果文件不存在或无法访问,会发生错误。如果<file_name>不是绝对路径名,它将相对于当前目录解释。
对于此和其他选项文件选项的更多信息,请参阅第6.2.2.3节,“影响选项文件处理的命令行选项”。
-
Command-Line Format --defaults-group-suffix=str
Type 字符串 除了常规选项组外,还要阅读带有常规名称后缀的
str
组。例如,通常会读取[client]
和[mysql_secure_installation]
组。如果给出如下的选项--defaults-group-suffix=_other
,mysql_secure_installation 也会读取[client_other]
和[mysql_secure_installation_other]
组。关于此类选项文件选项的更多信息,请参阅第6.2.2.3节,“命令行选项对选项文件处理的影响”。
-
Command-Line Format --host
连接到MySQL服务器的给定主机上。
-
Command-Line Format --no-defaults
不读取任何选项文件。如果程序启动失败,因为从一个选项文件中读取了未知选项,
--no-defaults
可以用来防止它们被读取。除了在所有情况下都要读取的
.mylogin.cnf
文件之外,这个选项可以阻止其他任何文件的选项被读取。如果这个文件存在,即使使用了--no-defaults
,它也会被读取。这允许在不安全的环境中指定密码,而不是直接在命令行上输入。要创建.mylogin.cnf
文件,可以使用 mysql_config_editor 工具。请参阅第 6.6.7 节,“mysql_config_editor — MySQL 配置编辑器”。关于这个和其他影响选项文件处理的命令行选项的更多信息,请参阅第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
--password=
,密码
-p
密码
Command-Line Format --password=密码
Type 字符串 Default Value [none]
这项选项被接受但忽略。无论是否使用这一选项,mysql_ secure_installation 总是要求用户输入密码。
-
--port=
,端口号
-P
端口号
Command-Line Format --port=端口号
Type 数字 Default Value 3306
用于TCP/IP连接的端口号。
-
Command-Line Format --print-defaults
打印程序名称及其来自选项文件的所有选项。
有关此类别和其他影响选项文件处理的命令行选项的更多信息,请参阅第6.2.2.3节,“命令行选项影响选项文件处理”。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}
Command-Line Format --protocol=类型
Type 字符串 Default Value [请参阅文本]
Valid Values TCP
SOCKET
PIPE
MEMORY
用于连接到服务器的传输协议。它在其他连接参数通常导致使用不同于您想要的协议时非常有用。有关允许值的详细信息,请参阅第6.2.7节,“连接传输协议”。
-
Command-Line Format --socket={文件名|管道名}
Type 字符串 对于连接到
localhost
,要使用的Unix套接字文件,或在Windows上,要使用的命名管道名称。在Windows上,此选项仅适用于服务器以支持命名管道连接而启动时。另外,连接必须是由
named_pipe
系统变量指定的Windows组成员,并且必须是由named_pipe_full_access_group
系统变量指定的Windows组成员。 -
以
--ssl
开头的选项指定是否使用加密连接服务器,并指示SSL密钥和证书的位置。请参阅命令选项:加密连接。 -
--ssl-fips-mode={OFF|ON|STRICT}
Command-Line Format --ssl-fips-mode={OFF|ON|STRICT}
Deprecated 是 Type 枚举值 Default Value OFF
Valid Values OFF
ON
STRICT
控制是否在客户端启用FIPS模式。与其他以
--ssl-
开头的选项不同,xxx --ssl-fips-mode
不用于建立加密连接,而是影响哪些加密操作被允许。请参阅第8.8节,“FIPS支持”。这些
--ssl-fips-mode
的值是允许的:-
OFF
:禁用FIPS模式。 -
ON
:启用FIPS模式。 -
STRICT
:启用“严格”FIPS模式。
Note如果OpenSSL FIPS对象模块不可用,
--ssl-fips-mode
的唯一允许值为OFF
。在这种情况下,将--ssl-fips-mode
设置为ON
或STRICT
将在启动时导致客户端产生一个警告,并以非FIPS模式运行。此选项已被弃用。预计将来版本的MySQL中将其移除。
-
-
--tls-ciphersuites=
ciphersuite_list
Command-Line Format --tls-ciphersuites=ciphersuite_list
Type 字符串 用于TLSv1.3加密连接的允许密码套件。值是一个由一个或多个冒号分隔的密码套件名称列表。可以为此选项命名的密码套件取决于MySQL编译时使用的SSL库。有关详细信息,请参阅第8.3.2节,“加密连接TLS协议和密码套件”。
-
--tls-sni-servername=
server_name
Command-Line Format --tls-sni-servername=server_name
Type 字符串 当指定时,名称将通过
libmysqlclient
C API 库的MYSQL_OPT_TLS_SNI_SERVERNAME
选项传递给mysql_options()
。服务器名称不区分大小写。要查看客户端为当前会话指定的服务器名称(如果有),请检查Tls_sni_server_name
状态变量。Server Name Indication (SNI) 是 TLS 协议的一个扩展(OpenSSL 必须使用 TLS 扩展编译此选项才能工作)。MySQL 对 SNI 的实现仅限于客户端侧。
-
Command-Line Format --tls-version=协议列表
Type 字符串 Default Value TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
(OpenSSL 1.1.1 或更高版本)TLSv1, TLSv1.1, TLSv1.2
(否则)用于加密连接的允许 TLS 协议。值是一个由一个或多个逗号分隔的协议名称列表。可以为此选项命名的协议取决于用来编译 MySQL 的 SSL 库。详细信息,请参阅第 8.3.2 节,“加密连接的 TLS 协议和密码”。
-
Command-Line Format --use-default
Type 布尔值 执行非交互式安装。这个选项可以用于无人操作的安装操作。
-
--user=
,用户名称
-u
用户名称
Command-Line Format --user=user_name
Type 字符串 MySQL服务器连接时要使用的MySQL账户的用户名。