跳到主要内容

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.ini 或 C:\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. 查看并理解各项配置参数的含义

参考资料​