CentOS 7 安装 MySQL 8 保姆级教程

📅 2026/7/29 10:10:30
CentOS 7 安装 MySQL 8 保姆级教程
CentOS 7 安装 MySQL 8 保姆级教程含初始化、远程连接、避坑在 CentOS 7 上搭 MySQL 8看似一条yum install的事实际新手 90% 会卡在三个地方临时密码找不到、改密码被策略拦、远程连不上。本文从环境检查到远程连接打通全程实测把每个坑都填平。测试环境说明本文操作基于以下环境测试通过CentOS Linux release 7.6.1810 (Core) Linux localhost 3.10.0-957.el7.x86_64 MySQL 8.0.xUbuntu / Debian 用户思路一致只是安装命令换成apt仓库源不同本文以 CentOS 7 为主。一、检查系统是否已安装 MySQL / MariaDBCentOS 7 默认会带 MariaDBMySQL 的社区分支如果直接装 MySQL 可能冲突。先查一下rpm-qa|grep-imysqlrpm-qa|grep-imariadb有输出说明已安装相关包需要走第二节卸载无输出说明是干净的可直接跳到第三节二、卸载已安装的版本如有# 逐个卸载替换成上一步查到的包名yum remove-ymysql mysql-server mariadb mariadb-server# 清理残留数据目录重要否则新装会沿用旧数据/配置rm-rf/var/lib/mysqlrm-rf/etc/my.cnf⚠️ 生产环境删数据目录前务必确认已备份这一步不可逆。三、安装 MySQL 83.1 添加 MySQL 官方 Yum 仓库# 下载 MySQL 8.0 的 Yum 仓库包社区版免费wgethttps://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm# 安装仓库rpm-ivhmysql80-community-release-el7-11.noarch.rpm如果服务器无法访问外网也可以在能上网的机器下载好 rpm 再 scp 传上去。3.2 安装 MySQL 服务端yuminstall-ymysql-community-server安装完成后可执行文件在/usr/sbin/mysqld数据目录默认/var/lib/mysql。3.3 启动并设置开机自启# 启动systemctl start mysqld# 查看状态systemctl status mysqld# 设置开机自启systemctlenablemysqld看到active (running)说明启动成功。四、获取初始临时密码MySQL 8 首次启动会为 root 生成一个临时密码存在日志里greptemporary password/var/log/mysqld.log输出类似[Note] A temporary password is generated for rootlocalhost: aB3kPq9Xy!m记下这个密码下一步登录要用。五、登录并修改 root 密码mysql-uroot-p# 输入刚才的临时密码登录后第一件事就是改密码否则什么都做不了ALTERUSERrootlocalhostIDENTIFIEDBYNewPass#2026;⚠️ MySQL 8 默认开启validate_password策略密码必须包含大小写字母 数字 特殊字符且长度≥8。太简单会报ERROR 1819。如果只想本地测试、想要简单密码可先降低策略再改SETGLOBALvalidate_password.policyLOW;SETGLOBALvalidate_password.length6;六、配置远程连接默认 root 只允许localhost登录外网/其他机器连不上。两种方式方式一授权 root 远程登录测试环境可用-- MySQL 8 必须先建用户再授权不能直接 GRANT 创建用户CREATEUSERroot%IDENTIFIEDBYNewPass#2026;GRANTALLPRIVILEGESON*.*TOroot%WITHGRANTOPTION;FLUSHPRIVILEGES;方式二新建专用远程账号生产推荐CREATEUSERremote%IDENTIFIEDBYRemote#2026;GRANTSELECT,INSERT,UPDATE,DELETEONmydb.*TOremote%;FLUSHPRIVILEGES;放行防火墙端口# firewalld 放行 3306firewall-cmd--zonepublic --add-port3306/tcp--permanentfirewall-cmd--reload# 确认firewall-cmd --list-ports云服务器还要在安全组里放行 3306 入方向否则防火墙放了也没用。七、常见问题排查1. 远程连接报2059 - authentication pluginMySQL 8 默认用caching_sha2_password老版本的 Navicat / 驱动不认。改为旧插件ALTERUSERroot%IDENTIFIEDWITHmysql_native_passwordBYNewPass#2026;FLUSHPRIVILEGES;2. 忘记 root 密码# 停止服务systemctl stop mysqld# 免密启动mysqld_safe --skip-grant-tables# 直接登录无需密码mysql-uroot登录后刷新权限再改密码FLUSHPRIVILEGES;ALTERUSERrootlocalhostIDENTIFIEDBYNewPass#2026;改完kill掉mysqld_safe进程正常systemctl start mysqld即可。3. 启动失败日志提示端口/目录权限# 确认数据目录属主chown-Rmysql:mysql /var/lib/mysql# 查看错误日志定位cat/var/log/mysqld.log|tail-504. 客户端连不上但本地能进按优先级检查① 防火墙 3306 是否放行 → ② 云安全组 → ③ 用户是否%而非localhost→ ④ 认证插件是否为mysql_native_password。写在最后到这一步你已经拥有一台可远程访问的 MySQL 8 实例可以接着部署 Spring Boot、Tomcat 等 Java 应用了。核心记住三件事临时密码在日志里、密码策略默认很严、远程连不上先查防火墙和安全组。觉得本文有帮助别忘了点赞 收藏 ⭐你的支持是我持续输出的动力