[网站更新]重新配置数据库 | 折腾日志

该文章主要记载改造的前因与部分技术细节

前因:mysql原先配置不合理

网站架构

    网站使用docker+相应的镜像搭建
    流量经过:请求 -> 根据域名分发请求(nginx) -> wordpress(依赖mysql)

    问题

    跨平台迁移:在这样一个架构中,要备份网站,需要保存wordpress与mysql生成的数据。同时为了主题开发,我需要将数据(不用保证最新)搬至windows上。

    但将网站转移到windows上后发现,mysql镜像启动失败,根据日志,这与windows和linux的文件系统大小写敏感相关(windows大小写不敏感,linux相反)。

    经过资料的查找,mysql数据库是否大小写敏感与配置`lower_case_table_names`有关,数据库初始化完成后,这项配置就无法修改了。也就是原本的数据库只能在linux上运行,无法搬迁到windows上。在资料的查找中,我才意识到mysql需要挂载上my.cnf来进行配置。

    root密码疑似遗失:原先设置的是随机root密码,将在stdout中输出,但可能因为其它配置有误(也可能我是大笨蛋喵),在控制台中没有找见root密码。这可能会带来隐患,当有迫切需求时无法操作数据库(操作起来会很麻烦)。

    这些因素归根于mysql的不当配置,同时当前该网站内容不多,能够相对轻松地完成改造。

    细节

    细节主要在于数据库的初始化过程,包括:

    1. root密码设置
    2. (用于wordpress的)表、用户初始化

    root密码与表的初始化可以通过docker设置环境变量 / 通过init.sql进行,但设置中出现了麻烦的问题:(mysql:9.2.0)通过环境变量设置了root密码后,初始化过程中,出现了root账户登录错误,使得表与用户没有创建。

    (这一段包含我的猜想,未得到验证)这可能与密码规则相关,初始化中登录是”mysql_native_password”,而设置的密码是”caching_sha2_password”;同时在mysql的某个版本开始,已经没有”mysql_native_password”或类似的选项了。这表明初始化过程中可能存在不合理的地方。对于我的需求,要么初始化中设置密码,随后(初始化完成后)再创建用户与表;要么先不设置root密码,在初始化中的init.sql中设置密码,这样在初始化中就能一次性完成密码的设置和用户与表的创建。

    评论

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注