Ubuntu 20.04下通过apt安装MySQL并配置root用户使用auth_socket认证
解决apt安装MySQL时root用户认证方式不一致问题
问题根因
不同Debian/Ubuntu发行版携带的MySQL安装包默认配置存在差异,且主机上残留的debconf配置项会跳过安装交互环节,最终导致root用户默认认证方式不一致。
实现固定auth_socket认证的部署步骤
- 第一步:清理历史残留配置,避免旧配置干扰新装
执行以下命令彻底卸载MySQL并清理残留文件、配置项:
# 卸载已安装的MySQL相关包 apt purge -y mysql-server mysql-common mysql-server-* # 删除数据和配置目录 rm -rf /var/lib/mysql /etc/mysql # 清除debconf中缓存的MySQL配置 echo PURGE | debconf-communicate mysql-server-8.0
- 第二步:预置debconf配置,安装时直接采用auth_socket认证
提前写入安装参数,完全跳过交互提示,强制安装默认配置:
# 预置root密码为空,不使用密码认证 echo "mysql-server-8.0 mysql-server/root_password string" | debconf-set-selections echo "mysql-server-8.0 mysql-server/root_password_again string" | debconf-set-selections # 预置root用户默认认证插件为auth_socket echo "mysql-server-8.0 mysql-server/auth-plugin select auth_socket" | debconf-set-selections
- 第三步:安装MySQL并执行兜底校验修正
为避免特殊发行版包配置覆盖预置项,安装完成后强制修改root认证方式,双重保证符合预期:
# 安装MySQL服务 apt update && apt install -y mysql-server # 用系统默认维护账号修改root认证方式,无需提前知道root密码 DEBIAN_CNF="/etc/mysql/debian.cnf" mysql --defaults-extra-file=${DEBIAN_CNF} -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket; FLUSH PRIVILEGES;"
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

