MySQL 简介与环境搭建

最后更新: 2026-01-22 作者: MySQL Team
页面目录

第一章:MySQL 简介与环境搭建


1.1 MySQL 概述

什么是 MySQL

MySQL 是最流行的开源关系型数据库管理系统之一,由瑞典 MySQL AB 公司开发,现属于 Oracle 公司。

核心特性:

特性 说明
开源免费 GPL 协议,社区版完全免费
跨平台 支持 Linux、Windows、macOS
关系型 支持 SQL 标准,ACID 特性
高性能 优化的查询处理,高并发支持
存储引擎 InnoDB、MyISAM 等多种引擎
复制集群 主从复制、Group Replication
事务支持 完整的 ACID 事务支持

MySQL 版本选择

MySQL 8.0.x  ← 推荐生产环境使用
MySQL 5.7.x  ← 经典稳定版本
MySQL 5.6.x  ← 旧系统维护

1.2 安装 MySQL

YUM 安装(CentOS/RHEL)

# 添加 MySQL Yum 源
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

# 安装 MySQL 服务器
sudo yum install -y mysql-community-server

# 启动服务
sudo systemctl start mysqld
sudo systemctl enable mysqld

# 获取临时密码
sudo grep 'temporary password' /var/log/mysqld.log

# 安全初始化
mysql_secure_installation

APT 安装(Debian/Ubuntu)

# 下载 APT 配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb

# 安装 MySQL
sudo apt-get update
sudo apt-get install -y mysql-server

# 启动服务
sudo systemctl start mysql
sudo systemctl enable mysql

Docker 部署

# 拉取官方镜像
docker pull mysql:8.0

# 运行容器
docker run -d \
  --name mysql8 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=YourStrongPassword123! \
  -v mysql_data:/var/lib/mysql \
  mysql:8.0

# 连接数据库
docker exec -it mysql8 mysql -uroot -p

源码编译安装

# 安装依赖
yum install -y cmake make gcc gcc-c++ ncurses-devel openssl-devel

# 下载源码
wget https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.36.tar.gz
tar -xzf mysql-8.0.36.tar.gz
cd mysql-8.0.36

# 编译安装
cmake .. \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_unicode_ci

make -j$(nproc)
make install

1.3 MySQL 配置

配置文件结构

# 配置文件位置
/etc/my.cnf              # 主配置文件
/etc/my.cnf.d/           # 额外配置目录
~/.my.cnf                # 用户配置

# 配置文件优先级(从高到低)
命令行参数 > ~/.my.cnf > /etc/my.cnf > /etc/my.cnf.d/*.cnf

基础配置示例

[mysqld]
# 基础设置
server_id = 1
port = 3306
basedir = /usr/local/mysql
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock

# 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 连接设置
max_connections = 151

# 缓存设置
innodb_buffer_pool_size = 128M
key_buffer_size = 32M

# 日志设置
log_error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

# InnoDB 设置
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1

[client]
default-character-set = utf8mb4
port = 3306

配置参数说明

参数 默认值 说明
max_connections 151 最大连接数
innodb_buffer_pool_size 128M InnoDB 缓冲池大小
key_buffer_size 32M MyISAM 索引缓存
sort_buffer_size 256K 排序缓冲区
max_allowed_packet 64M 最大数据包大小

1.4 启动与连接

服务管理命令

# 启动 MySQL
sudo systemctl start mysqld

# 停止 MySQL
sudo systemctl stop mysqld

# 重启 MySQL
sudo systemctl restart mysqld

# 查看状态
sudo systemctl status mysqld

客户端连接

# 基本连接
mysql -u root -p

# 指定主机和端口
mysql -h 192.168.1.100 -P 3306 -u root -p

# 执行 SQL 文件
mysql -u root -p < schema.sql

# 执行单个查询
mysql -u root -p -e "SELECT VERSION();"

常用命令

-- 查看数据库
SHOW DATABASES;

-- 选择数据库
USE mydb;

-- 查看表
SHOW TABLES;

-- 查看版本
SELECT VERSION();

-- 查看当前用户
SELECT USER();

-- 查看所有变量
SHOW VARIABLES;

1.5 常见问题

Q1: 忘记 root 密码怎么办?

# 1. 停止 MySQL 服务
sudo systemctl stop mysqld

# 2. 以跳过授权表模式启动
sudo mysqld_safe --skip-grant-tables &

# 3. 免密登录并重置密码
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';

# 4. 重启服务
sudo systemctl restart mysqld

Q2: 端口被占用怎么办?

# 查看 3306 端口占用
netstat -tlnp | grep 3306

# 修改端口配置
# 在 my.cnf 中添加:port = 3307

Q3: Socket 文件找不到?

# 查看 socket 文件位置
mysql --help | grep socket

# 或在配置文件中指定
[mysqld]
socket = /var/lib/mysql/mysql.sock

[client]
socket = /var/lib/mysql/mysql.sock

1.6 本章小结

✅ MySQL 是一种功能强大的开源关系型数据库
✅ 支持多种安装方式:YUM、APT、Docker、源码编译
✅ 通过 my.cnf 配置文件管理数据库参数
✅ 使用 mysql 客户端工具连接和管理数据库

📖 下章预告:SQL 基础与数据类型