我在mysqld.service
状态说明中看到了一个奇怪的错误......
The syntax '--ssl=off' is deprecated and will be removed in a future release. Please use --tls-version=invalid instead.
问题是我已经skip_ssl
在中禁用了 SSL /etc/my.cnf
,并且我没有看到在中定义与 SSL 相关的任何变量/etc/my.cnf.d/*
。我也已经检查过/etc/systemd/system/mysqld.service.d/override.conf
,我唯一设置的是LimitNOFILE
。
该--ssl=off
设置是命令行启动变量,那么这个错误可能来自哪里?除了 之外,还有其他新方法可以禁用 SSL 吗skip_ssl
?
我使用的是 Rockly Linux 8 和 MySQL 8.0.26。
相关文档(包括弃用说明)可在此处找到:https://dev.mysql.com/doc/refman/8.0/en/server-options.html
答案1
我最终在文档中发现,格式skip_ssl
实际上与命令行中的变量相同,因此错误消息的歧义导致了我的困惑。cnf
--ssl
解决这个问题的方法是替换skip_ssl
为tls_version=''
,因为前者从 MySQL 8.0.26 开始已被弃用。
这导致状态中出现了许多与 ssl 相关的新错误,因此我会在解决这些问题后发布所有我能发布的说明,希望这有助于减轻任何困惑并节省您的一些时间。
关于使用时出现的新错误tls_version=''
...
[Warning] ... [Server] Failed to initialize TLS for channel: mysql_main. See below for the description of exact issue.
[Warning] ... [Server] Failed to set up SSL because of the following SSL library error: TLS version is invalid
[Warning] ... [Server] Plugin mysqlx reported: 'Failed at SSL configuration: "SSL context is not usable without certificate and private key"'
有一个在 Oracle 上打开错误报告概述了这种行为,并表达了我的观点。
答案2
该选项的功能--tls-version=''
现已在 MySQL 8.0.31 中修复:
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-31.html
已弃用的 --ssl=off 服务器选项的替代方法是禁用加密连接,但该选项无法按文档所述或弃用警告中所述的方式工作。将 tls_version 系统变量设置为空值 (tls_version='') 现在可以正确实现此目的。(Bug #106459、Bug #33858646)