MySQL 8.x重新初始化报错[MY-010069] [Server] Failed to set up SSL because of the following SSL library error

文章讲述了在MySQL数据库初始化过程中遇到SSL_CTX_set_default_verify_paths失败的报错,分析了原因(my.cnf中SSL配置缺失),提供了移除SSL配置后重新初始化并自动生成证书的解决方案,以及初始化过程中的注意事项和相关配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

数据库在删掉datadir后,执行mysqld --initialize重新初始化时出现 SSL_CTX_set_default_verify_paths failed报错,导致数据库无法启动。

2023-11-29T12:34:08.528662Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2023-11-29T12:34:08.528692Z 0 [Warning] [MY-000081] [Server] option 'max_binlog_size': unsigned value 2147483648 adjusted to 1073741824.
2023-11-29T12:34:08.528727Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2023-11-29T12:34:08.528834Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.21) initializing of server in progress as process 8725
2023-11-29T12:34:08.538078Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-11-29T12:34:17.577211Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-11-29T12:34:18.351246Z 0 [Warning] [MY-013595] [Server] Failed to initialize TLS for channel: mysql_main. See below for the description of exact issue.
2023-11-29T12:34:18.351779Z 0 [Warning] [MY-010069] [Server] Failed to set up SSL because of the following SSL library error: SSL_CTX_set_default_verify_paths failed
2023-11-29T12:34:18.432643Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ma>ldnxI=97O
二、分析原因

根据日志信息判断应该是初始化SSL相关文件报错。我们检查自定义配置文件my.cnf,可以看到ssl-ca/ssl-cert/ssl-key的配置信息,是因为初始化时会根据my.cnf去配置数据库,初始化时ssl相关的证书文件是不存在(还未自动生成),导致报错。

二、解决办法

在初始化前去掉my.cnf里面SSL相关的配置,待初始化后自动生成证书文件, 数据库正常后,然后再去my.cnf文件配置SSL就可以了。

### 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
三、初始化的过程

注意初始化是不会保留数据的,需要保留数据,请先将数据库备份出来,最后再恢复

# 注意初始化是不会保留数据的,需要保留数据,请先将数据库备份出来,最后再恢复

# 停止数据库

systemctl stop mysqld

# 进入Mysql默认数据目录

cd /var/lib/

# 移除数据目录(直接改名备份)

mv mysql mysql_bak

# 执行初始化

mysqld --initialize  --user=mysql

# 查看数据库日志

cat /var/log/mysqld.log

# 启动数据库

systemctl start mysqld

# 查看数据库状态

systemctl status mysqld
四、参考my.cnf

系统CentOS7.4

CPU数量2个

内存16GB

数据库版本MySQL 8.0.21

/etc/my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid



### 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

server-id = 001

skip_name_resolve = 1
character-set-server = utf8mb4

key_buffer_size 	 = 16M
max_allowed_packet	 = 32M
table_open_cache	 = 64
tmp_table_size 		 = 256M
max_heap_table_size 	 = 256M
# used for order by group by
sort_buffer_size	 = 52K
# used for inner left right join
join_buffer_size 	 = 8M
net_buffer_length	 = 16K
read_buffer_size	 = 4M
sort_buffer_size 	 = 8M
read_rnd_buffer_size	 = 8M
max_connections		 = 2048
max_connect_errors 	 = 600
myisam_sort_buffer_size	 = 8M
#lower_case_table_names	 = 1
# Turn off ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

thread_stack = 512K
external-locking = FALSE

interactive_timeout = 7200
wait_timeout = 7200

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

### slow query log settings ###
#slow_query_log = 1
#slow_query_log_file = /var/lib/mysql/slow.log
#long_query_time = 5
#log_queries_not_using_indexes = 0
#min_examined_row_limit = 5000
#log_slow_admin_statements = 0
#log_slow_slave_statements = 1

### Bin-Log settings ###
sync_binlog = 1
log-bin=mysql-bin
binlog_format = mixed
binlog_row_image = FULL
# Reserved 7 days
binlog_expire_logs_seconds = 604800
binlog_cache_size = 2M
max_binlog_cache_size = 2G
max_binlog_size = 2G

### innodb settings ###

# buffer_pool_size up to 50 - 80 % of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 10G
innodb_data_home_dir	 = /var/lib/mysql
innodb_data_file_path = ibdata1:1G:autoextend
innodb_log_buffer_size = 32M
innodb_log_file_size = 2G
innodb_sort_buffer_size = 1048576
innodb_lock_wait_timeout = 60
innodb_print_all_deadlocks = 1
innodb_file_per_table    = 1
innodb_flush_log_at_trx_commit = 1

### slave settings ###
#relay-log=mysql-slave-relay-bin

# enable the event scheduler
event_scheduler=ON

# client SSL settings
[client]
ssl-ca = /var/lib/mysql/ca.pem
ssl-cert = /var/lib/mysql/client-cert.pem
ssl-key = /var/lib/mysql/client-key.pem
# TLS version
tls_version=TLSv1.2,TLSv1.3

[mysqldump]
quick
max_allowed_packet = 32M

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值