解决 MySQL 8.0 启动时的错误“CA certificate ca.pem is self signed”

By | 最新修改:2024-08-17

CentOS 8 安装好 MySQL 8.0 后,启动 MySQL,执行 systemctl status mysqld 命令,MySQL 能正常运行,但是,发现有个警告:[Warning] CA certificate /var/lib/mysql/ca.pem is self signed,并且不认配置文件,且系统资源占用太多。

我的 2GB 内存被 MySQL 用了 20% 余。在网上搜寻了一番得到一个完美解决方案。

解决方案

/etc/my.cnf 文件中追加上以下配置:

cat >> /etc/my.cnf <<EOF
[client]
# SSL Settings
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem

[mysqld]
# SSL Settings
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem
EOF

重启 MySQL 服务。


检验是否生效

  1. 登录进 MySQL Shell
    mysql -uroot -p
    # 输入密码
    
  2. 执行下面的 SQL 语句
    SHOW VARIABLES LIKE '%ssl%';
    

    于是得到以下的结果:

    mysql> SHOW VARIABLES LIKE '%ssl%';
    +--------------------+--------------------------------+
    | Variable_name      | Value                          |
    +--------------------+--------------------------------+
    | have_openssl       | YES                            |
    | have_ssl           | YES                            |
    | mysqlx_ssl_ca      |                                |
    | mysqlx_ssl_capath  |                                |
    | mysqlx_ssl_cert    |                                |
    | mysqlx_ssl_cipher  |                                |
    | mysqlx_ssl_crl     |                                |
    | mysqlx_ssl_crlpath |                                |
    | mysqlx_ssl_key     |                                |
    | ssl_ca             | /var/lib/mysql/ca.pem          |
    | ssl_capath         |                                |
    | ssl_cert           | /var/lib/mysql/server-cert.pem |
    | ssl_cipher         |                                |
    | ssl_crl            |                                |
    | ssl_crlpath        |                                |
    | ssl_fips_mode      | OFF                            |
    | ssl_key            | /var/lib/mysql/server-key.pem  |
    +--------------------+--------------------------------+
    17 rows in set (0.01 sec)
    
    mysql>
    

    执行语句:

    SHOW SESSION STATUS LIKE '%Ssl_version%';
    

    执行结果:

    mysql> SHOW SESSION STATUS LIKE '%Ssl_version%';
    +--------------------+---------+
    | Variable_name      | Value   |
    +--------------------+---------+
    | Mysqlx_ssl_version |         |
    | Ssl_version        | TLSv1.3 |
    +--------------------+---------+
    2 rows in set (0.00 sec)
    mysql>
    

解决方案完成任务。

感谢:

https://stackoverflow.com/questions/34342300/problems-setting-up-ssl-connections-for-mysql-on-ubuntu-14-04



程序知路

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com