
适用场景当你的 MySQL 5.7 因旧安装残留路径冲突、配置错乱、数据目录损坏导致无法启动或登录时本文提供一套完整的二进制包重装方案。核心步骤包括解压安装包到全新路径、清理旧目录、初始化数据目录并记录临时密码、配置 systemd 服务、最后用临时密码登录并修改 root 密码。按本文操作后你将得到一个干净、可开机自启、可正常登录的全新 MySQL 5.7 实例。第一步在终端下载bashcd ./softwget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz第二步从原始二进制包重新安装你已有的安装包在 /soft/mysql-5.7.44-linux-glibc2.12-x86_64/。2. 解压并放置到新位置建议用一个干净的新路径避免和旧残留混淆bashsudo mkdir -p /usr/local/mysqlsudo tar -xzf/soft/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/如果解压出来的目录名很长重命名一下sudo mv /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64/* /usr/local/mysql/ 2/dev/null清理空目录如果存在sudo rmdir /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64 2/dev/null如果解压后直接就是 mysql 目录跳过重命名那步。确保 mysql 用户存在bashid mysql || (sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql)3. 设置目录属主bashsudo chown -R mysql:mysql /usr/local/mysql第三步初始化数据目录并记录临时密码这是最关键的一步。务必记录屏幕上输出的临时密码只显示一次。bash创建新的数据目录如果希望数据独立存放sudo mkdir -p /var/lib/mysqlsudo chown -R mysql:mysql /var/lib/mysql初始化sudo /usr/local/mysql/bin/mysqld --initialize --usermysql --basedir/usr/local/mysql --datadir/var/lib/mysql执行后终端会输出类似 [Note] A temporary password is generated for rootlocalhost: xxxxxxxx 的信息立刻把 xxxxxxxx 记下来。第四步配置并启动服务创建配置文件 /etc/my.cnf用一个最简配置避免之前的路径冲突ini[mysqld]basedir/usr/local/mysqldatadir/var/lib/mysqlsocket/var/lib/mysql/mysql.sockpid-file/var/lib/mysql/mysqld.pidlog-error/var/lib/mysql/mysql.errusermysql[client]socket/var/lib/mysql/mysql.sock创建 systemd 服务文件bashsudo tee /etc/systemd/system/mysqld.service /dev/null ‘EOF’[Unit]DescriptionMySQL ServerAfternetwork.target[Service]UsermysqlGroupmysqlExecStart/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnfRestarton-failure[Install]WantedBymulti-user.targetEOF启动并设置开机自启bashsudo systemctl daemon-reloadsudo systemctl start mysqldsudo systemctl enable mysqldsudo systemctl status mysqld如果状态显示 active (running)说明重装成功。第五步用临时密码登录并修改bash/usr/local/mysql/bin/mysql -u root -p输入你刚才记录的临时密码。登录后 MySQL 会强制你改密码如果你是用临时密码或重置后的密码登录的先执行下面几条确认身份和认证方式sqlSELECT user(), current_user();SELECT user, host, plugin FROM mysql.user WHERE user‘root’;重点看 plugin 字段如果是 mysql_native_password说明可以用密码正常登录。如果是 auth_socket本地登录可能不校验密码远程或用密码登录会失败需要改。立刻修改 root 密码不管你当前用的是什么密码登进来的建议马上设一个你确定的、记得住的密码。MySQL 5.7 用sqlALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘你的新密码’;FLUSH PRIVILEGES;把 MySQL 的 bin 目录加入 PATH推荐编辑当前用户的 shell 配置文件。你用的是 bash所以改 ~/.bashrcbashecho ‘export PATH/usr/local/mysql/bin:$PATH’ ~/.bashrcsource ~/.bashrc然后直接敲 mysql -u root -p 就能用了。如果你希望所有用户都能直接用 mysql 命令可以写到全局配置里bashsudo tee /etc/profile.d/mysql.sh /dev/null ‘EOF’export PATH/usr/local/mysql/bin:$PATHEOFsource /etc/profile.d/mysql.sh