You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ansible安装MySQL 8.0.21并解决root密码为空问题

问题原因
  • 你当前使用的MySQL 8.0社区版独立deb包,对应的debconf配置项名称为mysql-community-server,而非官方源自带的mysql-server,原有配置匹配不到对应软件包的配置项,导致密码未写入。
  • MySQL 8.0默认安装后root用户启用auth_socket认证插件,仅允许本地root系统用户通过socket免密登录,也会表现为root密码为空的现象。
修正后的Ansible配置
- name: 预置MySQL root密码到debconf
  debconf: 
    name: 'mysql-community-server' 
    question: 'mysql-community-server/root_password' 
    value: '{{ MySQL_root_pass }}' 
    vtype: 'password'
  become: yes
  environment:
    DEBIAN_FRONTEND: noninteractive

- name: 二次确认MySQL root密码到debconf
  debconf: 
    name: 'mysql-community-server' 
    question: 'mysql-community-server/root_password_again' 
    value: '{{ MySQL_root_pass }}' 
    vtype: 'password'
  become: yes
  environment:
    DEBIAN_FRONTEND: noninteractive

- name: 安装MySQL社区版deb包
  apt: 
    deb: "required_package.deb"
  become: true
  environment:
    DEBIAN_FRONTEND: noninteractive

# 可选:强制root用户使用密码认证,避免socket免密登录的问题
- name: 配置MySQL root用户使用密码认证
  shell: >
    mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{{ MySQL_root_pass }}'; FLUSH PRIVILEGES;"
  become: yes
  ignore_errors: yes
注意事项
  • 如果之前已经安装过MySQL未清理干净,需先执行apt purge mysql-*并删除/var/lib/mysql目录后再运行新的playbook,避免残留配置影响。
  • 不需要对MySQL_root_pass变量加quote过滤器,debconf模块会自动处理特殊字符,加了反而可能导致密码被额外加上引号导致不匹配。

内容的提问来源于stack exchange,提问作者JINU JANAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:54:05