MySQL

什么是MySQL?

MySQL 是一个目前最流行、应用最广泛的开源关系型数据库管理系统。 我们日常使用的许多网站、App(如淘宝、微信、Facebook、YouTube)的后台数据,都存储在 MySQL 这样的数据库中。

你可以把 MySQL 想象成一个能力超强、且免费的“数据管家”。
• 你的数据就是它的“货物”。
• 表就是它用来分门别类存放货物的“货架”。
• SQL 就是你向它下达的“指令”(比如“把某个货物存进去”、“把某个货物找出来”)。
• 而它的管理系统则确保了仓库的运作安全、高效、有序,即使有成千上万人同时来存取货物,也不会出错和混乱。

安装MySQL

路径一:本地原生安装(最传统)
这种方式直接在您的物理机操作系统上安装 MySQL。

方式 适用平台 特点 推荐场景
操作系统包管理器 Linux/macOS - 最简单、最集成 - 自动服务管理- 通过系统仓库更新 生产环境、新手学习
官方安装包 Windows/macOS - 图形化向导- 自动配置- 包含官方工具集 Windows/macOS 用户、新手
源码编译安装 所有平台 - 极度灵活- 可深度定制- 过程复杂、耗时 高级用户、特定优化需求、学习原理
  • 核心价值:完全控制、性能直接、符合传统习惯。

路径二:容器化安装(最现代、最推荐)
这种方式在隔离的容器环境中运行 MySQL,是目前开发和测试的首选。

方式 核心技术 特点 推荐场景
Docker Run Docker - 一行命令启动 - 环境隔离- 快速清理
Docker Compose Docker - 声明式配置- 可定义数据卷、网络- 易于复现环境 开发环境、微服务架构、团队协作
Podman Podman - 兼容 Docker 命令- 无需守护进程- 更安全 寻求 Docker 替代品的用户
  • 核心价值:环境隔离、快速部署、一致性、易于管理。

路径三:集成化安装(最便捷)
这种方式将 MySQL 与其他必要的开发工具打包在一起,一键安装。

方式 包含组件 特点 推荐场景
XAMPP / WAMP / MAMP Apache, MySQL, PHP - 真正的一键安装- 开箱即用- 配置预优化 PHP全栈初学者、快速搭建本地网站
Laravel Homestead Vagrant Box - 预配置的完整Linux开发环境- 与生产环境高度一致 Laravel 框架开发者

什么是"云服务器安装 MySQL"?

这指的是:在一台由云服务商提供的远程虚拟服务器上,手动安装和配置 MySQL。
• 底层:云服务商(阿里云、腾讯云、AWS等)提供硬件和虚拟化
• 上层:你拥有完整的操作系统权限,像管理物理服务器一样安装和管理 MySQL
简单来说:
"云服务器安装 MySQL"指的是在一台远程的、由云服务商提供的虚拟计算机上,手动安装和配置 MySQL 数据库软件。

MySQL 云服务器安装的好处

在云服务器上安装 MySQL,意味着你拥有一个在云环境中的、完整的、可远程访问的虚拟服务器,并在其上手动安装和配置 MySQL。
这种方式的好处主要体现在 灵活性、控制力和成本效益上。

  • 完全的掌控权和灵活性
    版本选择自由:你可以安装任何版本的 MySQL(社区版、企业版),甚至是 MariaDB、Percona Server 等分支版本,不受云服务商提供的托管数据库版本限制。

  • 深度自定义配置:可以完全控制 my.cnf 配置文件,根据具体业务需求对数据库进行极致的性能调优(如缓冲池大小、连接数、日志设置等)。

  • 安装任意软件:你可以在同一台服务器上安装与 MySQL 配套的其他应用,如 Web 服务器、缓存(Redis)、监控代理等,架构设计更灵活。

  • 成本优化(对于特定场景)
    如果你的数据库资源利用率很高,并且能长期稳定运行,那么购买一台配置合适的云服务器可能比使用按小时计费的云数据库(如 AWS RDS)更便宜。
    你无需为云数据库服务附带的“管理费”买单。

  • 技能复用和迁移便利
    对于熟悉传统服务器运维的 DBA 和开发人员来说,管理云服务器上的 MySQL 与管理物理机或虚拟机上的几乎没有区别,学习成本低。
    数据库文件和配置方式都是标准的,可以相对容易地在不同云平台甚至本地环境之间进行迁移,避免了云厂商的“锁定”。

  • 网络和性能控制
    你可以将云服务器和应用服务器放置在同一个虚拟私有云(VPC)内,通过内网通信,获得低延迟、高带宽、安全的网络环境。
    可以选择 SSD 云盘或本地 SSD 盘,针对 I/O 密集型业务进行优化。
    适用场景:需要高度自定义配置、有特定的版本需求、希望节省成本且拥有专业运维团队的公司。

在云服务器上最推荐 :包管理器安装(最推荐)

# CentOS/RHEL
sudo yum install mysql-server
# 或
sudo dnf install mysql-server

# Ubuntu/Debian
sudo apt update
sudo apt install mysql-server

包管理器安装 MySQL 详细步骤(CentOS/RHEL 系统)

安装 MySQL

  1. 添加 MySQL 官方仓库(推荐,获取最新版本)
# 下载 MySQL 官方仓库配置
wget https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm

# 安装仓库 RPM 包
rpm -Uvh mysql80-community-release-el7-9.noarch.rpm

# 验证仓库是否添加成功
yum repolist enabled | grep "mysql.*-community.*"
  1. 安装 MySQL 服务器
# 安装 MySQL 服务器和客户端
yum install -y mysql-community-server mysql-community-client

# 安装常用的 MySQL 工具
yum install -y mysql-community-common mysql-community-devel

如果不想用官方仓库,使用系统自带版本:

# 使用系统自带仓库(版本可能较老)
yum install -y mysql-server mysql-client

启动和启用 MySQL 服务

  1. 启动 MySQL 服务
bash
# 启动 MySQL 服务
systemctl start mysqld

# 设置开机自启动
systemctl enable mysqld

# 检查服务状态
systemctl status mysqld
  1. 查看服务状态确认
# 应该看到 active (running) 状态
systemctl status mysqld

# 检查 MySQL 进程
ps aux | grep mysql

# 检查端口监听
netstat -ln | grep 3306
# 或使用
ss -tlnp | grep 3306

安全配置 MySQL

  1. 获取初始临时密码
# MySQL 8.0 会生成临时密码,查看日志获取
grep 'temporary password' /var/log/mysqld.log

# 如果找不到,尝试(新版本可能在不同位置)
grep 'temporary password' /var/log/mysql/mysqld.log
输出示例:

text
2023-01-01T00:00:00.000000Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Abc123!@#xyz
记下这个临时密码:Abc123!@#xyz
  1. 运行安全配置脚本
# 运行安全安装向导
mysql_secure_installation
  1. 安全配置交互步骤
按照提示依次操作:

1. 输入临时密码:
Enter password for user root: [输入刚才记下的临时密码]

2. 重置 root 密码:
The existing password for the user account root has expired. Please set a new password.
New password: [输入新密码]
Re-enter new password: [再次输入新密码]
注意:MySQL 8.0 要求强密码(包含大小写字母、数字、特殊字符)

3. 移除匿名用户:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

4. 禁止 root 远程登录:
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

5. 移除测试数据库:
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

6. 重新加载权限表:
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

验证安装

  1. 测试登录 MySQL
# 使用新密码登录
mysql -u root -p
  1. 执行基本测试命令
-- 显示 MySQL 版本
SELECT VERSION();

-- 显示当前用户
SELECT USER();

-- 显示所有数据库
SHOW DATABASES;

-- 退出 MySQL
EXIT;
  1. 检查安装的文件位置
# 查看 MySQL 相关文件
# 配置文件
ls -l /etc/my.cnf

# 数据目录
ls -l /var/lib/mysql/

# 日志文件
ls -l /var/log/mysqld.log

基本配置调整

  1. 编辑配置文件
# 备份原始配置
cp /etc/my.cnf /etc/my.cnf.backup

# 编辑配置文件
vi /etc/my.cnf
  1. 添加基础配置(在 [mysqld] 部分)
[mysqld]
# 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 基础性能设置(根据服务器内存调整)
innodb_buffer_pool_size = 128M

# 允许最大连接数
max_connections = 100

# 错误日志
log-error = /var/log/mysqld.log

# 慢查询日志(可选,用于学习)
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
  1. 重启 MySQL 使配置生效
# 重启 MySQL 服务
systemctl restart mysqld

# 确认服务正常运行
systemctl status mysqld

创建学习用数据库和用户

  1. 登录 MySQL
mysql -u root -p
  1. 创建专用学习数据库和用户
-- 创建学习数据库
CREATE DATABASE learn_mysql;

-- 创建专用用户(更安全)
CREATE USER 'study_user'@'localhost' IDENTIFIED BY 'Study123!@#';

-- 授予权限
GRANT ALL PRIVILEGES ON learn_mysql.* TO 'study_user'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;

-- 验证用户创建
SELECT user, host FROM mysql.user;

-- 退出
EXIT;
  1. 测试新用户
# 使用新创建的用户登录
mysql -u study_user -p learn_mysql

验证完整安装

最终验证步骤:

# 1. 检查服务状态
systemctl status mysqld

# 2. 测试 root 登录
mysql -u root -p -e "SELECT VERSION();"

# 3. 测试学习用户登录  
mysql -u study_user -p -e "SHOW DATABASES;"

# 4. 检查端口监听
netstat -tlnp | grep 3306

更多推荐