跳到主要内容

MySQL 安装配置

本章将介绍 MySQL 在不同操作系统上的安装方法和基本配置。

Windows 安装

方式一:安装包安装

  1. 下载 MySQL 安装包

访问 MySQL 官方下载页面,选择 Windows 版本下载。

  1. 运行安装程序
双击下载的 .msi 文件
选择安装类型:
- Developer Default(开发者默认):包含 MySQL Server、Workbench、Shell 等
- Server only:只安装 MySQL Server
- Custom:自定义安装组件
  1. 配置 MySQL Server
- 选择配置类型:Development Computer(开发机)
- 设置 root 密码
- 配置 Windows 服务(建议设置为自动启动)
- 完成安装

方式二:解压版安装

  1. 下载解压版

从官网下载 ZIP Archive 版本。

  1. 解压到目标目录
解压到:D:\mysql-8.0\
  1. 创建配置文件

在 MySQL 目录下创建 my.ini

[mysqld]
# 设置端口
port=3306

# 设置安装目录
basedir=D:/mysql-8.0

# 设置数据目录
datadir=D:/mysql-8.0/data

# 最大连接数
max_connections=200

# 字符集
character-set-server=utf8mb4

# 存储引擎
default-storage-engine=INNODB

[client]
port=3306
default-character-set=utf8mb4
  1. 初始化数据库
# 以管理员身份运行 PowerShell
cd D:\mysql-8.0\bin

# 初始化(生成临时密码)
.\mysqld --initialize --console

# 记录输出的临时密码,例如:
# A temporary password is generated for root@localhost: Ab3#xYz9Kp
  1. 安装服务
# 安装 MySQL 服务
.\mysqld --install MySQL

# 启动服务
net start MySQL
  1. 修改密码
# 登录 MySQL
.\mysql -u root -p

# 输入临时密码后,修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

Linux 安装

Ubuntu/Debian

# 更新软件包列表
sudo apt update

# 安装 MySQL Server
sudo apt install mysql-server

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

# 运行安全配置脚本
sudo mysql_secure_installation

安全配置说明

- 设置 root 密码强度策略
- 移除匿名用户
- 禁止 root 远程登录
- 删除测试数据库
- 重新加载权限表

CentOS/RHEL

# 添加 MySQL 仓库
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

# 安装 MySQL Server
sudo yum install mysql-server

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

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

# 登录并修改密码
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

Docker 安装

# 拉取 MySQL 镜像
docker pull mysql:8.0

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

# 进入 MySQL 容器
docker exec -it mysql mysql -u root -p

Docker Compose 配置

version: '3.8'

services:
mysql:
image: mysql:8.0
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_password
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./my.cnf:/etc/mysql/conf.d/my.cnf
command: --default-authentication-plugin=mysql_native_password

volumes:
mysql_data:

macOS 安装

Homebrew 安装

# 安装 MySQL
brew install mysql

# 启动服务
brew services start mysql

# 安全配置
mysql_secure_installation

DMG 安装包

  1. 从官网下载 DMG 安装包
  2. 双击安装,按照向导完成安装
  3. 在系统偏好设置中配置 MySQL

配置文件详解

MySQL 配置文件通常位于:

  • Windows: my.iniC:\ProgramData\MySQL\MySQL Server 8.0\my.ini
  • Linux: /etc/mysql/my.cnf/etc/my.cnf

常用配置项

[mysqld]
# 服务器 ID(用于复制)
server-id=1

# 端口
port=3306

# 绑定地址(0.0.0.0 表示所有网卡)
bind-address=0.0.0.0

# 数据目录
datadir=/var/lib/mysql

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

# 默认存储引擎
default-storage-engine=INNODB

# 最大连接数
max_connections=500

# 连接超时
wait_timeout=28800
interactive_timeout=28800

# 缓冲池大小(建议为物理内存的 70-80%)
innodb_buffer_pool_size=1G

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

# 二进制日志(用于复制和恢复)
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7

# InnoDB 配置
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=50

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

[mysql]
default-character-set=utf8mb4

关键参数说明

参数说明建议值
max_connections最大连接数500-2000
innodb_buffer_pool_sizeInnoDB 缓冲池物理内存的 70-80%
innodb_log_file_size日志文件大小256M-1G
innodb_flush_log_at_trx_commit日志刷新策略1(安全)或 2(性能)
long_query_time慢查询阈值(秒)1-3

启动和停止服务

Windows

# 启动服务
net start MySQL

# 停止服务
net stop MySQL

# 重启服务
net stop MySQL; net start MySQL

# 或使用服务管理器
services.msc

Linux

# 启动服务
sudo systemctl start mysqld

# 停止服务
sudo systemctl stop mysqld

# 重启服务
sudo systemctl restart mysqld

# 查看状态
sudo systemctl status mysqld

# 设置开机自启
sudo systemctl enable mysqld

# 取消开机自启
sudo systemctl disable mysqld

连接 MySQL

命令行连接

# 本地连接
mysql -u root -p

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

# 指定数据库
mysql -u root -p mydb

# 使用配置文件连接
mysql --defaults-file=/path/to/my.cnf

命令行参数

参数说明
-h主机地址
-P端口号
-u用户名
-p密码(交互式输入)
-D数据库名
-e执行 SQL 语句
--defaults-file指定配置文件

示例

# 执行 SQL 语句后退出
mysql -u root -p -e "SELECT VERSION();"

# 导入 SQL 文件
mysql -u root -p mydb < backup.sql

# 导出数据库
mysqldump -u root -p mydb > backup.sql

常见问题解决

1. 忘记 root 密码

# 停止 MySQL 服务
sudo systemctl stop mysqld

# 以跳过权限表的方式启动
sudo mysqld_safe --skip-grant-tables &

# 无密码登录
mysql -u root

# 修改密码
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

# 重启服务
sudo systemctl restart mysqld

2. 无法远程连接

-- 检查用户权限
SELECT host, user FROM mysql.user;

-- 创建允许远程访问的用户
CREATE USER 'root'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

-- 或修改现有用户
UPDATE mysql.user SET host='%' WHERE user='root' AND host='localhost';
FLUSH PRIVILEGES;

检查防火墙:

# 开放 3306 端口
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

3. 字符集问题

-- 查看字符集设置
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation%';

-- 修改数据库字符集
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 修改表字符集
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

4. 连接数过多

-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';
SHOW PROCESSLIST;

-- 查看最大连接数
SHOW VARIABLES LIKE 'max_connections';

-- 临时修改最大连接数
SET GLOBAL max_connections=1000;

-- 永久修改需要在配置文件中设置

小结

本章我们学习了:

  1. Windows、Linux、macOS 上安装 MySQL
  2. Docker 方式安装 MySQL
  3. 配置文件详解和常用参数
  4. 服务的启动和停止
  5. 连接 MySQL 的方法
  6. 常见问题的解决

练习

  1. 在本地环境安装 MySQL
  2. 修改 root 密码并创建新用户
  3. 配置 MySQL 允许远程连接
  4. 查看并理解各项配置参数的含义

参考资源