马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在 CentOS 7 上直接 yum install mysql-server,装到手的是 MariaDB 而不是 MySQL——这是很多人第一次踩的坑。原因是 CentOS 7 的默认源里根本没有 MySQL 服务端包,baseos/appstream 里给的是 MariaDB。确实要用 Oracle 官方的 MySQL 8,就得自己加 MySQL 社区 yum 仓库。这篇把这条路走通。
一、先想清楚:真的需要 MySQL 吗
General 场景下 MariaDB 可以无缝替换 MySQL:同样的 mysql、mysqladmin 客户端,SQL 语法高度兼容,LEMP / LNMP 组件不用改代码。只有用到 8.0 特有特性(比如某些 CTE 行为差异、密码插件 caching_sha2_password 的客户端兼容要求、Oracle 官方企业特性)时才值得折腾官方 MySQL。如果你的业务没有这些强需求,装 MariaDB 更省事。
二、 prerequisites
- 一台 CentOS 7 机器;
- 一个具备 sudo 权限的非 root 用户(别一直用 root 远程运维);
- 能访问 dev.mysql.com(内网环境先确认出口策略)。
三、添加 MySQL 社区 yum 仓库
打开 https://dev.mysql.com/downloads/repo/yum/,找到对应CentOS 7 的安装包(形如 mysql80-community-release-el7-*.noarch.rpm),先用 curl 拉下来:
curl -SLO https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
下载后建议做个校验:跑 md5sum 包名,把输出的哈希和下载页面上列出的 MD5 值对一下,不一致就说明文件传输出错了,重新下。
md5sum mysql80-community-release-el7-5.noarch.rpm
校验通过再装:
sudo rpm -ivh mysql80-community-release-el7-5.noarch.rpm
这个 rpm 会在 /etc/yum.repos.d/ 下写入 MySQL 的 repo 文件。注意:下载页面现在常见的是 MySQL 8.0 仓库,如果你要装 5.7,需要下载的是 mysql57-community-release-el7-*.noarch.rpm,别把版本号张冠李戴(很多教程里 5.7 的 rpm 配 8.0 的安装命令,就是装不上/装错包的原因)。
四、安装 MySQL 服务端
sudo yum install mysql-server
提示确认时按 y。首次引入新仓库时 yum 还会再问一次要不要导入它的 GPG 密钥,同样按 y。
五、启动并找临时密码
sudo systemctl start mysqld
sudo systemctl status mysqld
输出里出现 Active: active (running) 就说明起来了。MySQL 8 在安装时会自动给 root 生成一个临时密码,位置在日志 里:
sudo grep 'temporary password' /var/log/mysqld.log
2022-01-24T19:54:46.313728Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: mqRfBU_3Xk>r
记下这串密码,下一步要用。MySQL 8 默认密码策略要求至少 12 位,且同时包含大写、小写、数字和特殊字符,临时密码往往不满足,所以第一次登录必须改密码。
六、跑安全脚本
sudo mysql_secure_installation
第一步让输入 root 密码,就贴上面那条临时密码;系统会要求重设新密码,设成符合强度的 12 位以上密码并确认。之后几项统一回答 y:删除匿名用户、禁止 root 远程登录、删除 test 数据库及其权限、重新加载权限表。其中「禁止 root 远程登录」这条建议保留,远程连库走专用账号 + 防火墙白名单。
七、验证
mysqladmin -uroot -p version
mysqladmin Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Server version 8.0.28
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 3 min 2 sec
打印出 Server version 8.0.x 就说明整条链路通了。最后再补两件事:sudo systemctl enable mysqld 设开机自启;如果业务要远程连,改 /etc/my.cnf 的 bind-address 并开防火墙端口,别直接把 root 暴露出去。
八、升级注意
MySQL 8.x 的 caching_sha2_password 认证插件在老客户端(部分老旧 JDBC 驱动、PHP 老版本 mysqlnd、某些备份工具)上会连不上。遇到 Authentication plugin 'caching_sha2_password' cannot be loaded,要么升级客户端驱动,要么给老账号改回 mysql_native_password。迁移前务必在测试环境跑一遍业务连通性。
qidao123.com企服评测-应用市场 编辑提示 |