MySQL安装方法
MySQL提供了多种安装方式,可以根据您的操作系统和需求选择合适的安装方法。
Windows系统安装
Windows系统推荐使用MySQL Installer进行安装:
- 访问MySQL官网下载MySQL Installer
- 运行安装程序,选择"Developer Default"安装类型
- 按照向导完成安装过程
- 设置root用户密码
- 完成安装并启动MySQL服务
Linux系统安装
Linux系统可以使用包管理器安装MySQL:
Ubuntu/Debian:
终端命令
# 更新包列表
sudo apt update
# 安装MySQL服务器
sudo apt install mysql-server
# 运行安全安装脚本
sudo mysql_secure_installation
CentOS/RHEL:
终端命令
# 添加MySQL Yum仓库
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 安装MySQL服务器
sudo yum install mysql-community-server
# 启动MySQL服务
sudo systemctl start mysqld
# 查看临时root密码
sudo grep 'temporary password' /var/log/mysqld.log
CentOS 8 / Rocky Linux 8:
终端命令
# 启用MySQL模块
sudo dnf module enable mysql:8.0
# 安装MySQL服务器
sudo dnf install mysql-server
# 启动并启用服务
sudo systemctl enable --now mysqld
源码编译安装
终端命令
# 安装依赖
sudo apt install build-essential cmake libncurses5-dev libssl-dev
# 下载源码
wget https://dev.mysql.com/get/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 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_INNOBASE_STORAGE_ENGINE=1
# 编译并安装
make && sudo make install
Docker安装MySQL
终端命令
# 拉取MySQL镜像
docker pull mysql:8.0
# 运行MySQL容器
docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:8.0
# 使用Docker Compose
# docker-compose.yml示例:
# version: '3.8'
# services:
# mysql:
# image: mysql:8.0
# environment:
# MYSQL_ROOT_PASSWORD: rootpass
# ports:
# - "3306:3306"
# volumes:
# - ./data:/var/lib/mysql
macOS系统安装
macOS系统可以使用Homebrew或DMG安装包:
使用Homebrew:
终端命令
# 安装MySQL
brew install mysql
# 启动MySQL服务
brew services start mysql
# 运行安全安装脚本
mysql_secure_installation
MySQL配置优化
MySQL的配置文件通常位于:
- Windows:
my.ini - Linux/macOS:
/etc/my.cnf或/etc/mysql/my.cnf
常用配置参数
my.cnf 配置示例
[mysqld]
# 基本配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
port=3306
user=mysql
# 连接配置
max_connections=100
connect_timeout=10
wait_timeout=600
interactive_timeout=28800
max_allowed_packet=16M
# 内存配置
innodb_buffer_pool_size=1G
innodb_buffer_pool_instances=1
innodb_log_buffer_size=16M
key_buffer_size=256M
query_cache_size=128M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=4M
join_buffer_size=2M
# 日志配置
log-error=/var/log/mysqld.log
slow_query_log=1
slow_query_log_file=/var/log/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
innodb_log_file_size=512M
innodb_log_files_in_group=2
innodb_flush_method=O_DIRECT
[mysql]
default-character-set=utf8mb4
prompt="\u@\h [\d]> "
[client]
default-character-set=utf8mb4
port=3306
socket=/var/lib/mysql/mysql.sock
内存配置详解
| 参数 | 说明 | 推荐值 |
|---|---|---|
| innodb_buffer_pool_size | InnoDB缓冲池,存储索引和数据 | 物理内存的50%-80% |
| key_buffer_size | MyISAM索引缓冲区 | 如果主要使用InnoDB,设为64M即可 |
| sort_buffer_size | 排序缓冲区大小 | 2M-4M,避免过大 |
| join_buffer_size | 连接缓冲区大小 | 2M-4M |
| tmp_table_size | 内存临时表最大大小 | 16M-64M |
字符集配置
为了支持中文和特殊字符,建议使用utf8mb4字符集:
SQL命令
-- 查看当前字符集设置
SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';
-- 设置数据库字符集
ALTER DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
用户和权限管理
创建用户
SQL命令
-- 创建新用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
-- 授予权限
GRANT ALL PRIVILEGES ON my_database.* TO 'newuser'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
常用权限管理命令
| 命令 | 描述 |
|---|---|
SHOW GRANTS FOR 'user'@'host'; |
查看用户权限 |
REVOKE privilege ON database.table FROM 'user'@'host'; |
撤销用户权限 |
DROP USER 'user'@'host'; |
删除用户 |
ALTER USER 'user'@'host' IDENTIFIED BY 'new_password'; |
修改用户密码 |
安全建议:生产环境中应使用强密码,并限制用户权限到最小必要范围。
服务管理
启动和停止MySQL服务
Windows:
命令提示符
# 启动MySQL服务
net start mysql
# 停止MySQL服务
net stop mysql
Linux/macOS:
终端命令
# 启动MySQL服务
sudo systemctl start mysqld
# 停止MySQL服务
sudo systemctl stop mysqld
# 重启MySQL服务
sudo systemctl restart mysqld
# 查看服务状态
sudo systemctl status mysqld
MySQL Router和MySQL Shell
终端命令
# 安装MySQL Shell
sudo apt install mysql-shell
# 启动MySQL Shell
mysqlsh
# 使用MySQL Shell连接
mysqlsh --uri root@localhost
# 安装MySQL Router(用于读写分离)
sudo apt install mysql-router
# 引导配置MySQL Router
sudo mysqlrouter --bootstrap root@localhost:3306 --directory /etc/mysqlrouter
安装后的验证和测试
安装完成后,需要验证MySQL是否正常运行:
连接MySQL服务器
终端命令
# 连接到MySQL服务器
mysql -u root -p
# 输入密码后,进入MySQL命令行界面
基本测试命令
SQL命令
-- 查看MySQL版本
SELECT VERSION();
-- 显示所有数据库
SHOW DATABASES;
-- 创建测试数据库
CREATE DATABASE test_db;
-- 使用数据库
USE test_db;
-- 创建测试表
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入测试数据
INSERT INTO test_table (name) VALUES ('测试数据');
-- 查询数据
SELECT * FROM test_table;
性能测试工具mysqlslap
终端命令
# 运行基准测试
mysqlslap --user=root --password --host=localhost --concurrency=50 --iterations=10 --auto-generate-sql
# 自定义查询测试
mysqlslap --query="SELECT * FROM employees WHERE department='IT'" --concurrency=100 --iterations=5
常见安装问题解决
忘记root密码
如果忘记了MySQL root用户密码,可以按照以下步骤重置:
Windows系统:
- 停止MySQL服务
- 创建一个包含重置密码SQL语句的文本文件
- 使用--init-file选项启动MySQL服务
- 重启MySQL服务
Linux系统:
终端命令
# 停止MySQL服务
sudo systemctl stop mysql
# 以跳过权限表的方式启动MySQL
sudo mysqld_safe --skip-grant-tables &
# 连接到MySQL服务器
mysql -u root
# 在MySQL命令行中执行以下命令
USE mysql;
UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
# 重启MySQL服务
sudo systemctl restart mysql
端口被占用
如果MySQL默认端口3306被占用,可以修改MySQL配置文件中的端口号:
my.cnf 配置
[mysqld]
port=3307
# 其他配置...
mysql_secure_installation详细说明
- 设置validate_password组件(密码强度验证)
- 移除匿名用户
- 禁止root远程登录
- 删除test数据库
- 刷新权限表
下一步学习
完成MySQL安装和配置后,您可以继续学习: