一、环境检查与安装包获取
在正式动手前,请先确认服务器操作系统版本。CentOS 7 及以上或 Ubuntu 18 以上均完美支持 MySQL 8。建议预留至少 2GB 可用内存,磁盘空间不低于 20GB。打开终端,直接使用 wget 命令从 MySQL 官网拉取 Generic Linux 版本的 tar.gz 压缩包。下载链接认准带 glibc2.17 后缀的文件,它能覆盖绝大多数现代发行版。文件下载完毕后,务必在命令行输入 md5sum 核对校验值,防止传输中途出现丢包或损坏。将安装包统一存放在 /opt/install 目录下,养成集中管理的习惯。
二、解压归档与目录规划
进入存放目录,执行 tar -zxvf mysql-8.0.xx-linux-glibc2.17-x86_64.tar.gz 命令进行解压缩。解压后的文件夹名称通常较长且带有版本号,为了方便记忆,将其重命名为 mysql。Linux 系统讲究目录规范,我们采用业界通用的分层结构:将程序本体放在 /usr/local/mysql,数据文件存放在 /data/mysql,错误日志统一写入 /var/log/mysql。提前用 mkdir -p 命令创建好这三个核心路径,后续操作会顺畅很多。
三、创建专用账户与权限分配
出于安全底线考量,严禁使用 root 超级管理员直接运行数据库进程。在终端新建一个独立的系统用户 mysql,命令为 useradd -r -s /bin/false mysql。接着将该用户设定为上述三个目录的所有者,执行 chown -R mysql:mysql /usr/local/mysql /data/mysql /var/log/mysql。这一步非常关键,如果不提前赋权,数据库在初始化或启动阶段会直接抛出 Permission denied 错误,排查起来极其耗时。
四、初始化配置与数据目录生成
接下来需要编写配置文件。在 /etc/my.cnf 中添加基础参数,重点指定 datadir 指向 /data/mysql,socket 路径设为 /tmp/mysql.sock,并将 log_error 定向到 /var/log/mysql/error.log。务必加上 character-set-server=utf8mb4 和 collation-server=utf8mb4_unicode_ci,从根源上杜绝中文乱码隐患。配置保存后,切换至 bin 目录执行 mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql。等待几分钟后,终端末尾会随机生成一行临时密码,必须立即抄录下来,这是首次登录的唯一钥匙。
五、注册系统服务与启动验证
为了让数据库随开机自动运行,需要将服务脚本纳入 systemd 管理。将 support-files/mysql.server 拷贝至 /etc/init.d/mysql,并用 chmod +x 赋予执行权限。打开该脚本,把里面的 basedir 和 datadir 变量替换成你实际创建的路径。随后执行 systemctl enable mysql 开启自启功能,再用 systemctl start mysql 拉起服务。通过 systemctl status mysql 查看状态,只要显示绿色的 active (running),就说明数据库引擎已经正常挂载。
六、密码重置与远程连接设置
使用临时密码登录客户端,命令为 mysql -u root -p。进入交互界面后,第一时间执行 ALTER USER 'root'@'localhost' IDENTIFIED BY '你的强密码'; 覆盖初始凭证。若需让开发机或其他服务器远程连接,请依次运行 CREATE USER 'root'@'%' IDENTIFIED BY '你的强密码'; 和 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; 最后键入 flush privileges; 刷新权限表。切记同步检查云厂商的安全组策略,手动放行 TCP 3306 端口,否则外网始终显示连接超时。
七、避坑指南与日常维护
安装完毕不代表万事大吉,新手常踩的两个坑是环境变量未生效和字符集未全局生效。若输入 mysql 提示找不到命令,请在 ~/.bashrc 末尾追加 export PATH=/usr/local/mysql/bin:$PATH,然后 source 重新加载。启动报错 InnoDB 无法分配内存时,通常是 swap 分区过小或 ulimit 限制过严,适当调大文件描述符上限即可。定期通过 show global status like 'Innodb_data_read'; 监控数据读写量,结合 slow_query_log 分析执行慢的 SQL,这样才能保证 MySQL 8 在高并发场景下持续稳定输出。



