第01章:MySQL概述与安装
第01章:MySQL概述与安装
1.1 MySQL简介
1.1.1 什么是MySQL
MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统之一,在Web应用方面,MySQL是最好的应用软件之一。
1.1.2 MySQL的特点
- 开源免费:社区版完全免费
- 性能卓越:执行速度快,适合高并发场景
- 可靠性高:成熟稳定,被广泛应用
- 使用简单:易于安装和使用
- 跨平台:支持多种操作系统
- 支持大型数据库:可以处理拥有上千万条记录的大型数据库
1.1.3 MySQL版本选择
主要版本:
- MySQL 5.5:较老版本,不推荐新项目使用
- MySQL 5.6:改进了性能和复制功能
- MySQL 5.7:⭐ 本教程重点,生产环境广泛使用
- 性能提升显著
- 支持JSON数据类型
- 改进的复制功能
- 更好的性能模式(Performance Schema)
- MySQL 8.0:最新版本
- 默认字符集改为utf8mb4
- 支持窗口函数
- 支持CTE(公共表表达式)
- 移除了查询缓存
本教程选择MySQL 5.7的原因:
- 生产环境使用最广泛
- 稳定性经过充分验证
- 大量企业仍在使用
- 学习5.7后升级到8.0很容易
1.2 MySQL 5.7 在Windows上的安装
1.2.1 下载MySQL 5.7
- 访问MySQL官网:https://dev.mysql.com/downloads/mysql/5.7.html
- 选择Windows版本
- 下载ZIP Archive版本(推荐)或MSI Installer版本
推荐下载: mysql-5.7.44-winx64.zip
1.2.2 ZIP版本安装步骤
步骤1:解压文件
解压到:D:\mysql-5.7.44
步骤2:创建配置文件
在MySQL根目录下创建 my.ini 文件:
[mysqld]
# 设置MySQL的安装目录
basedir=D:\\mysql-5.7.44
# 设置MySQL数据库的数据存放目录
datadir=D:\\mysql-5.7.44\\data
# 设置端口
port=3306
# 允许最大连接数
max_connections=200
# 允许连接失败的次数
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 默认存储引擎
default-storage-engine=INNODB
# 默认使用"mysql_native_password"插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 客户端使用的字符集
default-character-set=utf8mb4
[client]
# 客户端默认端口
port=3306
default-character-set=utf8mb4
步骤3:初始化MySQL
以管理员身份打开CMD,进入MySQL的bin目录:
cd D:\mysql-5.7.44\bin
# 初始化MySQL(会生成随机密码)
mysqld --initialize --console
重要: 记录控制台输出的临时密码,类似:
[Note] A temporary password is generated for root@localhost: kq7wK>iu(3pN
步骤4:安装MySQL服务
# 安装服务
mysqld --install MySQL57
# 启动服务
net start MySQL57
步骤5:修改root密码
# 登录MySQL(使用临时密码)
mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
# 刷新权限
FLUSH PRIVILEGES;
步骤6:配置环境变量(可选)
将 D:\mysql-5.7.44\bin 添加到系统环境变量PATH中,方便在任意位置使用mysql命令。
1.2.3 MSI安装器安装(简化版)
- 双击下载的MSI文件
- 选择"Custom"自定义安装
- 选择安装组件(MySQL Server、MySQL Workbench等)
- 配置MySQL Server
- 选择端口(默认3306)
- 设置root密码
- 配置Windows服务
- 完成安装
1.2.4 验证安装
# 查看MySQL版本
mysql --version
# 登录MySQL
mysql -u root -p
# 查看数据库
SHOW DATABASES;
# 查看当前用户
SELECT USER();
1.3 MySQL 5.7 在Linux上的安装
1.3.1 CentOS/RHEL安装(YUM方式)
步骤1:下载MySQL YUM Repository
# 下载MySQL YUM Repository
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 安装Repository
sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm
# 验证Repository
yum repolist enabled | grep mysql
步骤2:安装MySQL
# 安装MySQL服务器
sudo yum install mysql-community-server
# 启动MySQL服务
sudo systemctl start mysqld
# 设置开机自启
sudo systemctl enable mysqld
步骤3:获取临时密码
# 查看临时密码
sudo grep 'temporary password' /var/log/mysqld.log
步骤4:安全配置
# 登录MySQL
mysql -u root -p
# 修改密码(MySQL 5.7密码策略较严格)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourPassword@123';
# 或者运行安全配置脚本
mysql_secure_installation
安全配置脚本会提示:
- 修改root密码
- 删除匿名用户
- 禁止root远程登录
- 删除test数据库
- 重新加载权限表
1.3.2 Ubuntu/Debian安装(APT方式)
# 更新包索引
sudo apt update
# 安装MySQL服务器
sudo apt install mysql-server-5.7
# 启动MySQL服务
sudo systemctl start mysql
# 设置开机自启
sudo systemctl enable mysql
# 运行安全配置
sudo mysql_secure_installation
1.3.3 通用二进制包安装
步骤1:下载并解压
# 下载
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
# 解压
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
# 移动到安装目录
sudo mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql
步骤2:创建MySQL用户和组
# 创建mysql用户组
sudo groupadd mysql
# 创建mysql用户
sudo useradd -r -g mysql -s /bin/false mysql
步骤3:创建数据目录并设置权限
# 创建数据目录
sudo mkdir -p /usr/local/mysql/data
# 设置所有者
sudo chown -R mysql:mysql /usr/local/mysql
步骤4:初始化MySQL
cd /usr/local/mysql
# 初始化
sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 记录输出的临时密码
步骤5:配置my.cnf
sudo vi /etc/my.cnf
添加以下内容:
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
user=mysql
character-set-server=utf8mb4
default-storage-engine=INNODB
[mysql]
default-character-set=utf8mb4
[client]
port=3306
socket=/tmp/mysql.sock
default-character-set=utf8mb4
步骤6:配置系统服务
# 复制启动脚本
sudo cp support-files/mysql.server /etc/init.d/mysqld
# 设置执行权限
sudo chmod +x /etc/init.d/mysqld
# 启动MySQL
sudo /etc/init.d/mysqld start
# 设置开机自启
sudo chkconfig --add mysqld
sudo chkconfig mysqld on
步骤7:配置环境变量
# 编辑profile
sudo vi /etc/profile
# 添加以下内容
export PATH=$PATH:/usr/local/mysql/bin
# 使配置生效
source /etc/profile
1.3.4 防火墙配置
CentOS 7/8 (firewalld):
# 开放3306端口
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
Ubuntu (ufw):
# 开放3306端口
sudo ufw allow 3306/tcp
iptables:
# 开放3306端口
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo service iptables save
1.4 MySQL配置文件详解
1.4.1 配置文件位置
Windows:
my.ini在MySQL安装目录下
Linux: MySQL按以下顺序读取配置文件:
/etc/my.cnf/etc/mysql/my.cnf/usr/local/mysql/etc/my.cnf~/.my.cnf
查看配置文件读取顺序:
mysql --help | grep my.cnf
1.4.2 重要配置参数详解
基础配置
[mysqld]
# MySQL安装目录
basedir=/usr/local/mysql
# 数据存放目录
datadir=/usr/local/mysql/data
# 端口号
port=3306
# socket文件位置
socket=/tmp/mysql.sock
# 进程ID文件
pid-file=/usr/local/mysql/data/mysqld.pid
# 错误日志
log-error=/usr/local/mysql/data/error.log
字符集配置
# 服务器字符集(推荐utf8mb4,支持emoji)
character-set-server=utf8mb4
# 排序规则
collation-server=utf8mb4_unicode_ci
# 初始化连接字符集
init_connect='SET NAMES utf8mb4'
连接配置
# 最大连接数
max_connections=500
# 最大错误连接数
max_connect_errors=100
# 连接超时时间(秒)
wait_timeout=28800
# 交互式连接超时时间
interactive_timeout=28800
InnoDB配置(重要)
# 默认存储引擎
default-storage-engine=INNODB
# InnoDB缓冲池大小(建议设置为物理内存的50%-70%)
innodb_buffer_pool_size=1G
# InnoDB日志文件大小
innodb_log_file_size=256M
# InnoDB日志缓冲区大小
innodb_log_buffer_size=16M
# InnoDB刷新日志到磁盘的策略(1最安全但性能较低)
innodb_flush_log_at_trx_commit=1
# InnoDB数据文件刷新方法
innodb_flush_method=O_DIRECT
# InnoDB文件每表独立
innodb_file_per_table=1
日志配置
# 开启慢查询日志
slow_query_log=1
# 慢查询日志文件
slow_query_log_file=/usr/local/mysql/data/slow.log
# 慢查询时间阈值(秒)
long_query_time=2
# 记录没有使用索引的查询
log_queries_not_using_indexes=1
# 开启二进制日志(主从复制必须)
log-bin=mysql-bin
# 二进制日志格式(ROW/STATEMENT/MIXED)
binlog_format=ROW
# 二进制日志过期时间(天)
expire_logs_days=7
1.4.3 查看和修改配置
查看配置:
-- 查看所有配置
SHOW VARIABLES;
-- 查看特定配置
SHOW VARIABLES LIKE 'max_connections';
-- 查看字符集配置
SHOW VARIABLES LIKE 'character%';
动态修改配置(临时生效):
-- 修改最大连接数
SET GLOBAL max_connections=1000;
永久修改: 修改配置文件后重启MySQL服务。
1.5 常用客户端工具
1.5.1 命令行客户端
mysql命令行:
# 基本登录
mysql -u root -p
# 指定主机和端口
mysql -h 192.168.1.100 -P 3306 -u root -p
# 执行SQL文件
mysql -u root -p < script.sql
# 执行SQL语句
mysql -u root -p -e "SHOW DATABASES;"
mysqladmin工具:
# 查看服务器状态
mysqladmin -u root -p status
# 查看变量
mysqladmin -u root -p variables
# 刷新权限
mysqladmin -u root -p flush-privileges
# 关闭MySQL
mysqladmin -u root -p shutdown
1.5.2 图形化客户端
MySQL Workbench(官方):
- 免费开源
- 功能强大
- 支持数据建模、SQL开发、服务器管理
- 下载:https://dev.mysql.com/downloads/workbench/
Navicat for MySQL(商业):
- 界面友好
- 功能丰富
- 支持数据同步、备份、导入导出
DBeaver(免费):
- 开源免费
- 支持多种数据库
- 功能全面
HeidiSQL(免费,Windows):
- 轻量级
- 界面简洁
- 适合日常使用
phpMyAdmin(Web):
- 基于Web的管理工具
- 适合远程管理
- 需要PHP环境
1.5.3 推荐工具组合
开发环境:
- MySQL Workbench(数据建模)
- Navicat或DBeaver(日常开发)
生产环境:
- 命令行工具(脚本自动化)
- MySQL Workbench(紧急查看)
1.6 安装后的验证和测试
1.6.1 基本验证
-- 查看版本
SELECT VERSION();
-- 查看当前时间
SELECT NOW();
-- 查看当前用户
SELECT USER();
-- 查看数据库
SHOW DATABASES;
-- 查看存储引擎
SHOW ENGINES;
-- 查看字符集
SHOW VARIABLES LIKE 'character%';
-- 查看排序规则
SHOW VARIABLES LIKE 'collation%';
1.6.2 性能测试
-- 创建测试数据库
CREATE DATABASE test_db;
USE test_db;
-- 创建测试表
CREATE TABLE test_table (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入测试数据
INSERT INTO test_table (name) VALUES ('test1'), ('test2'), ('test3');
-- 查询测试
SELECT * FROM test_table;
-- 删除测试数据库
DROP DATABASE test_db;
1.7 常见安装问题
问题1:无法启动MySQL服务
Windows:
# 查看错误日志
type D:\mysql-5.7.44\data\*.err
# 常见原因:
# 1. 端口被占用
# 2. data目录权限问题
# 3. 配置文件错误
Linux:
# 查看错误日志
tail -f /var/log/mysqld.log
# 查看服务状态
systemctl status mysqld
问题2:忘记root密码
解决方法:
# 1. 停止MySQL服务
sudo systemctl stop mysqld
# 2. 跳过权限验证启动
sudo mysqld_safe --skip-grant-tables &
# 3. 登录MySQL(无需密码)
mysql -u root
# 4. 修改密码
USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;
# 5. 重启MySQL
sudo systemctl restart mysqld
问题3:远程连接被拒绝
-- 1. 创建远程用户或授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;
-- 2. 检查防火墙
-- 3. 检查bind-address配置(注释掉或设置为0.0.0.0)
1.8 小结
本章学习了:
- ✅ MySQL的基本概念和版本选择
- ✅ Windows和Linux上的安装方法
- ✅ 配置文件的详细说明
- ✅ 常用客户端工具
- ✅ 安装验证和常见问题
下一章预告: SQL基础 - DDL数据定义语言
练习题
- 在你的系统上安装MySQL 5.7
- 修改root密码并创建一个新用户
- 配置MySQL允许远程连接
- 安装一个图形化客户端工具并连接到MySQL
- 查看并记录你的MySQL配置参数
继续学习: 第02章:SQL基础-DDL