MySQL 安装与配置完全指南

MySQL作为最流行的开源关系型数据库之一,其安装与配置是开发者和管理员的必备技能。本文将详细介绍MySQL的各种安装方式及关键配置方法。

一、MySQL安装方式

1. 二进制包安装

二进制包安装是最简单快捷的方式,适合大多数生产环境。

Linux系统安装步骤

# 下载官方二进制包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.gz

# 解压安装包
tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

# 创建软链接
ln -s /usr/local/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql

# 创建mysql用户和组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 初始化数据库
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
bin/mysqld --initialize --user=mysql
bin/mysql_ssl_rsa_setup

实践建议

  • 生产环境建议使用二进制安装,稳定性高
  • 注意记录初始化时生成的临时密码
  • 建议将MySQL二进制目录加入PATH环境变量

2. 源码编译安装

源码安装适合需要自定义功能的场景,但过程较为复杂。

基本步骤

# 安装依赖
apt-get install -y cmake gcc g++ libncurses5-dev

# 下载源码
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz
tar -zxvf mysql-8.0.33.tar.gz
cd mysql-8.0.33

# 编译配置
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci

# 编译安装
make && make install

实践建议

  • 编译前确保系统有足够内存(建议4G以上)
  • 可以使用ccmake交互式配置工具调整编译选项
  • 生产环境不建议使用源码编译,除非有特殊需求

3. 包管理器安装(apt/yum)

使用系统包管理器安装最为简便,适合快速部署。

Ubuntu/Debian系统

# 添加MySQL APT仓库
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
dpkg -i mysql-apt-config_0.8.22-1_all.deb
apt-get update

# 安装MySQL服务器
apt-get install mysql-server

# 安全配置
mysql_secure_installation

CentOS/RHEL系统

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

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

# 启动服务
systemctl start mysqld
systemctl enable mysqld

# 查看临时密码
grep 'temporary password' /var/log/mysqld.log

实践建议

  • 包管理器安装会自动处理依赖和服务管理
  • 安装后立即运行安全配置脚本(mysql_secure_installation)
  • 注意不同Linux发行版的包名可能不同

4. Docker容器安装

Docker方式适合开发测试环境和云原生部署。

基本命令

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

# 运行容器
docker run --name mysql8 \
-e MYSQL_ROOT_PASSWORD=yourpassword \
-p 3306:3306 \
-v /my/custom:/etc/mysql/conf.d \
-v /my/data:/var/lib/mysql \
-d mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

实践建议

  • 生产环境使用Docker时务必挂载数据卷持久化数据
  • 可以通过环境变量配置root密码等参数
  • 建议使用docker-compose管理多容器部署

二、配置文件详解

MySQL配置文件(my.cnf或my.ini)是控制MySQL行为的关键。

配置文件位置

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

核心配置项

[mysqld]
# 基础设置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
port=3306

# 内存配置
innodb_buffer_pool_size=4G  # 建议为物理内存的50-70%
key_buffer_size=256M
sort_buffer_size=4M
read_buffer_size=1M

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

# InnoDB配置
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=1  # 1为最安全,2为折衷,0为性能最高
innodb_lock_wait_timeout=50
innodb_log_file_size=256M

实践建议

  • 修改配置后需要重启MySQL服务生效
  • 使用mysqld --verbose --help查看所有可用选项
  • 生产环境建议开启慢查询日志和错误日志

三、服务管理

启动与停止服务

Linux系统(systemd):

# 启动服务
systemctl start mysqld

# 停止服务
systemctl stop mysqld

# 重启服务
systemctl restart mysqld

# 查看状态
systemctl status mysqld

Windows系统:

# 启动服务
net start mysql80

# 停止服务
net stop mysql80

环境变量配置

将MySQL客户端工具加入PATH环境变量:

Linux系统:

echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bashrc
source ~/.bashrc

Windows系统:
在系统环境变量中添加MySQL的bin目录路径

实践建议

  • 生产环境建议使用systemd管理MySQL服务
  • 配置合适的服务启动超时时间(默认可能太短)
  • 重要操作前先停止服务备份数据

四、安装后必要操作

  1. 修改root密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
  2. 创建应用数据库和用户:

    CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'app_user'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'%';
    FLUSH PRIVILEGES;
  3. 安全加固:

    mysql_secure_installation

通过以上步骤,您已经完成了MySQL的安装和基本配置。根据实际应用场景,可能还需要进一步优化配置参数。

添加新评论