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_nameCommand-Line Format --defaults-extra-file=file_nameType 文件名 在全局选项文件之后但在用户选项文件之前(在Unix上)读取这个选项文件。如果指定的文件不存在或无法访问,会发生错误。如果
file_name不是绝对路径名,它将相对于当前目录解释。对于此选项文件及其它选项文件选项的更多信息,请参阅第6.2.2.3节,“影响选项文件处理的命令行选项”。
-
Command-Line Format --defaults-file=file_nameType 文件名 只使用给定的选项文件。如果文件不存在或无法访问,会发生错误。如果<file_name>不是绝对路径名,它将相对于当前目录解释。
对于此和其他选项文件选项的更多信息,请参阅第6.2.2.3节,“影响选项文件处理的命令行选项”。
-
Command-Line Format --defaults-group-suffix=strType 字符串 除了常规选项组外,还要阅读带有常规名称后缀的
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 TCPSOCKETPIPEMEMORY用于连接到服务器的传输协议。它在其他连接参数通常导致使用不同于您想要的协议时非常有用。有关允许值的详细信息,请参阅第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 OFFValid Values OFFONSTRICT控制是否在客户端启用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_listCommand-Line Format --tls-ciphersuites=ciphersuite_listType 字符串 用于TLSv1.3加密连接的允许密码套件。值是一个由一个或多个冒号分隔的密码套件名称列表。可以为此选项命名的密码套件取决于MySQL编译时使用的SSL库。有关详细信息,请参阅第8.3.2节,“加密连接TLS协议和密码套件”。
-
--tls-sni-servername=server_nameCommand-Line Format --tls-sni-servername=server_nameType 字符串 当指定时,名称将通过
libmysqlclientC 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-defaultType 布尔值 执行非交互式安装。这个选项可以用于无人操作的安装操作。
-
--user=,用户名称-u用户名称Command-Line Format --user=user_nameType 字符串 MySQL服务器连接时要使用的MySQL账户的用户名。