计算机应用

导航

第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,外部连不上。要远程访问需三步:

  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
  2. 开防火墙 3306bash # CentOS(firewalld) firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload # Ubuntu(ufw) ufw allow 3306/tcp (云服务器还要在"安全组"放行 3306。)
  3. 确保已创建 % 主机用户(见第六节)。

本机测试远程连通性:

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,别写错

九、小测验(自测)

  1. CentOS 和 Ubuntu 分别用什么命令安装 MySQL 服务端?为什么 CentOS 要先配置官方仓库?
  2. Ubuntu 上初次登录 root 为什么用 sudo mysql 而不是输密码?
  3. 写出创建 appuser 并授予 school 库增删改查权限的 SQL(三行)。
  4. 让 MySQL 允许远程连接,要改哪个配置项、开哪个端口?

【声明】本文由 AI 辅助生成,仅供 MySQL 数据库教学参考,如有疑误以教材为准。

posted on 2026-08-29 10:26  eagle福  阅读(11)  评论(0)    收藏  举报