第04周 Linux平台MySQL安装与综合环境搭建实训
第4周 · Linux 平台 MySQL 安装与综合环境搭建实训
真实项目里,MySQL 大多跑在 Linux 服务器上。这周我们在 Linux(CentOS / Ubuntu)上把 MySQL 装起来、跑起来,并学会创建专用账号、开放远程连接——这是"综合环境搭建"的核心能力。
前置:你有一台 Linux(虚拟机或云服务器)能联网、有
sudo/root 权限。命令中的#表示以 root 执行,$表示普通用户加sudo。
一、知识点:两套发行版,两套包管理器
| 发行版 | 包管理器 | 典型版本 |
|---|---|---|
| CentOS / Rocky / Anolis | yum(或 dnf) |
CentOS 7 |
| Ubuntu / Debian | apt |
Ubuntu 20.04 / 22.04 |
两者装的都是 MySQL 8.0 系列,只是安装命令和默认管理方式不同,装完之后的 SQL 完全一样。
二、操作教程:CentOS 7 安装 MySQL 8.0
CentOS 默认源里只有 MariaDB,没有 MySQL,所以要先配置 MySQL 官方 YUM 源。
# 1. 下载并安装 MySQL 官方 YUM 仓库(版本号以官网为准)
rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm
# 2. 安装 MySQL 服务端
yum install -y mysql-community-server
# 3. 启动服务并设置开机自启
systemctl start mysqld
systemctl enable mysqld
# 4. 首次启动会生成临时 root 密码,到日志里找
grep 'temporary password' /var/log/mysqld.log
记下日志里的临时密码(形如 A temporary password is generated for root@localhost: xxxxx)。
三、操作教程:Ubuntu 安装 MySQL 8.0
Ubuntu 的 mysql-server 默认就是 MySQL 8.0,直接装:
# 1. 更新软件源并安装
sudo apt update
sudo apt install -y mysql-server
# 2. 启动服务并开机自启
sudo systemctl start mysql
sudo systemctl enable mysql
Ubuntu 上 root 默认用
auth_socket插件登录(靠系统账户认证),所以初次登录要用sudo mysql,而不是输密码。装完建议用下面的"安全初始化"设密码。
四、操作教程:安全初始化
无论哪种发行版,都建议跑一次安全初始化脚本,设置 root 密码、移除匿名用户、禁止 root 远程登录:
mysql_secure_installation
按提示操作:设 root 密码(CentOS 用日志里的临时密码改;Ubuntu 若是 auth_socket 可先 sudo mysql 进库后 ALTER USER 再跑)、移除匿名用户、禁止远程 root、删除测试库。
Ubuntu 若想让 root 用密码登录,进库执行:
sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码'; FLUSH PRIVILEGES;
五、操作教程:启动 / 停止 / 登录
# 服务管理(CentOS 服务名 mysqld,Ubuntu 服务名 mysql)
systemctl start mysqld # 启动
systemctl stop mysqld # 停止
systemctl restart mysqld # 重启
systemctl status mysqld # 查看状态
# 命令行登录(CentOS 用临时/设置的密码;Ubuntu 用 sudo mysql 或密码)
mysql -u root -p
登录后基础查看:
SELECT VERSION(); -- 看版本
SHOW DATABASES; -- 看已有库
STATUS; -- 看连接与服务器状态
六、操作教程:创建专用用户并授权
不要用 root 直接给应用程序用。规范做法是建一个专用账号,只给它需要的库权限。
-- 创建用户 appuser,允许从任意主机(%)连接,密码 App@123456
CREATE USER 'appuser'@'%' IDENTIFIED BY 'App@123456';
-- 只授予对 school 库的增删改查权限
GRANT SELECT, INSERT, UPDATE, DELETE ON school.* TO 'appuser'@'%';
-- 刷新权限(MySQL 8.0 中 GRANT 已隐含刷新,但老版本需要)
FLUSH PRIVILEGES;
'appuser'@'%'中的%表示任意主机;若只允许本机连,写成'appuser'@'localhost'。授权遵循"最小权限原则"——只给用得上的权限。
七、操作教程:开放远程连接
默认 MySQL 只监听本机 127.0.0.1,外部连不上。要远程访问需三步:
- 改配置文件:把监听地址改为所有网卡。
bash # 编辑 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf # 找到 bind-address = 127.0.0.1,改为: bind-address = 0.0.0.0改完重启服务:systemctl restart mysqld - 开防火墙 3306:
bash # CentOS(firewalld) firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload # Ubuntu(ufw) ufw allow 3306/tcp(云服务器还要在"安全组"放行 3306。) - 确保已创建
%主机用户(见第六节)。
本机测试远程连通性:
mysql -h <服务器IP> -u appuser -p
能进 mysql> 说明远程通了。
八、易混点排查表
| 现象 | 解决方法 |
|---|---|
CentOS yum install mysql-server 找不到包 |
没配官方源;先装 mysql80-community-release 仓库包 |
| 找不到临时密码 | 看 /var/log/mysqld.log;Ubuntu 用 sudo mysql 直接进 |
Ubuntu mysql -u root -p 登不进 |
root 默认 auth_socket;用 sudo mysql,或改密码插件 |
| 远程连接超时 | 检查 bind-address=0.0.0.0、防火墙 3306、安全组、用户是否 % |
访问被拒 Access denied |
用户主机不匹配或密码错;确认 'user'@'%' 与连接来源一致 |
systemctl 报找不到服务 |
CentOS 服务名 mysqld,Ubuntu 是 mysql,别写错 |
九、小测验(自测)
- CentOS 和 Ubuntu 分别用什么命令安装 MySQL 服务端?为什么 CentOS 要先配置官方仓库?
- Ubuntu 上初次登录 root 为什么用
sudo mysql而不是输密码? - 写出创建
appuser并授予school库增删改查权限的 SQL(三行)。 - 让 MySQL 允许远程连接,要改哪个配置项、开哪个端口?
【声明】本文由 AI 辅助生成,仅供 MySQL 数据库教学参考,如有疑误以教材为准。
浙公网安备 33010602011771号