使用通用二进制文件在Unix/Linux上安装MySQL,能够让用户自主选择安装版本和部署路径,避免系统包管理器版本受限的问题,整个过程分为环境准备、包处理、配置初始化、服务启动几个核心环节。

安装前环境准备
首先需要确认系统满足MySQL运行的基础依赖,通用二进制文件通常需要libaio库支持,若系统未安装该依赖,需要先通过包管理器安装:
- Debian/Ubuntu系统执行
sudo apt-get install libaio1 - CentOS/RHEL系统执行
sudo yum install libaio
同时需要创建专门用于运行MySQL的系统用户和组,避免使用root用户直接运行数据库服务,降低安全风险:
# 创建mysql用户组 sudo groupadd mysql # 创建mysql用户并加入mysql组,禁止登录系统 sudo useradd -r -g mysql -s /bin/false mysql
下载并解压通用二进制包
前往MySQL官方渠道获取对应系统架构的通用二进制压缩包,下载完成后将包上传到目标服务器,解压到自定义的部署目录,通常建议放在/usr/local路径下:
# 解压压缩包,假设包名为mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz sudo tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ # 创建软链接简化目录名 sudo ln -s /usr/local/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
配置目录权限与基础配置
需要为MySQL创建数据存储目录,并将相关目录的属主设置为之前创建的mysql用户,避免权限不足导致初始化失败:
# 创建数据存储目录 sudo mkdir -p /usr/local/mysql/data # 设置目录属主为mysql用户和组 sudo chown -R mysql:mysql /usr/local/mysql sudo chown -R mysql:mysql /usr/local/mysql/data
可以创建基础的配置文件/etc/my.cnf,自定义数据库的端口、数据目录、字符集等参数:
[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data port=3306 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci socket=/tmp/mysql.sock [client] port=3306 socket=/tmp/mysql.sock default-character-set=utf8mb4
初始化数据库
进入MySQL的安装目录,执行初始化脚本,初始化过程会生成系统表和基础数据,同时会输出root用户的初始临时密码,需要妥善保存:
cd /usr/local/mysql # 执行初始化命令 sudo ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
如果初始化过程没有报错,最后几行输出中会包含类似A temporary password is generated for root@localhost: xxxxxxxx的内容,其中xxxxxxxx就是root用户的初始密码。
启动MySQL服务
初始化完成后,可以通过MySQL自带的启动脚本启动服务,也可以将MySQL注册为系统服务方便后续管理:
# 复制服务文件到系统服务目录 sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql # 赋予执行权限 sudo chmod +x /etc/init.d/mysql # 启动MySQL服务 sudo service mysql start
启动后可以通过查看进程确认服务是否正常运行:
ps -ef | grep mysql
配置环境变量与修改初始密码
为了方便在任意路径下执行MySQL命令,需要将MySQL的bin目录添加到系统环境变量中:
# 编辑环境变量配置文件 sudo vim /etc/profile # 在文件末尾添加以下内容 export MYSQL_HOME=/usr/local/mysql export PATH=$MYSQL_HOME/bin:$PATH # 使配置生效 source /etc/profile
使用初始密码登录MySQL后,必须修改root用户的密码才能执行后续操作:
-- 登录MySQL mysql -u root -p -- 输入初始密码后执行修改密码命令 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!'; -- 刷新权限 FLUSH PRIVILEGES;
常见问题排查
初始化时报libaio缺失
如果初始化过程提示error while loading shared libraries: libaio.so.1,说明系统未安装libaio依赖,按照安装前准备的步骤安装对应依赖即可。
启动服务时报目录权限错误
若启动失败且日志提示权限不足,检查/usr/local/mysql和/usr/local/mysql/data目录的属主是否为mysql用户,重新执行权限修改命令即可。
忘记初始密码
如果丢失了初始密码,可以停止MySQL服务后,以跳过权限验证的方式启动服务,然后重置密码:
# 停止服务 sudo service mysql stop # 跳过权限验证启动 sudo mysqld --skip-grant-tables --user=mysql & # 无密码登录 mysql -u root # 重置密码 USE mysql; UPDATE user SET authentication_string='' WHERE user='root'; FLUSH PRIVILEGES; -- 退出后重启服务,再用空密码登录修改新密码