Skip to content
返回

MySQL 安装步骤 (2026 最新持续补充)

一、Ubuntu / Debian(apt)

# 更新源
sudo apt update

# 安装(默认是系统自带版本,通常是 8.x)
sudo apt install mysql-server -y

# 安装后初始化(生产环境必须跑)
sudo mysql_secure_installation

启动 & 开机自启:

sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl status mysql

验证:

mysql --version

⚠️ Ubuntu/Debian 默认装的 MySQL 版本取决于仓库新旧。如果想要最新版 8.0 或 9.x,用下面”官方 APT 源”方式。


二、CentOS / RHEL / Rocky / AlmaLinux(yum/dnf)

# CentOS 8 / Rocky / AlmaLinux / RHEL 8+(用 dnf,yum 是别名)
sudo dnf install mysql-server -y

# CentOS 7(用 yum)
sudo yum install mysql-server -y

# 安装后初始化
sudo mysql_secure_installation

启动 & 开机自启:

sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld

验证:

mysql --version

三、官方 APT/YUM 源安装指定版本(推荐)

系统自带仓库版本通常偏低,用官方源可以装最新稳定版或指定 8.0/9.x。

3.1 Ubuntu(APT)

# 下载官方 APT 配置文件(选一个版本)
# MySQL 9.x(最新)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb

# MySQL 8.0
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb

# 安装配置包(会弹出交互界面选版本,选完确认)
sudo dpkg -i mysql-apt-config_0.8.32-1_all.deb

# 更新源并安装
sudo apt update
sudo apt install mysql-server -y

# 初始化
sudo mysql_secure_installation

安装时如果遇到交互界面,用方向键选 MySQL 版本,回车确认。

3.2 CentOS/RHEL(YUM)

# 下载官方 RPM 包
sudo yum install https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm

# 安装(会自动安装最新版 8.4 LTS 或 9.x)
sudo yum install mysql-community-server -y

# 如果想装指定版本,先禁用所有,再启用目标版本:
sudo dnf module disable mysql          # 禁用系统默认
sudo dnf install mysql-community-server -y

# 启动 & 初始化
sudo systemctl start mysqld
sudo mysql_secure_installation

注意: 首次启动时 MySQL 会生成临时 root 密码,查看方式:

sudo grep 'temporary password' /var/log/mysqld.log

四、压缩包二进制安装(Linux)

适用于:不想用包管理器、需要在同一台机器装多个实例、或者 root 权限受限时。

4.1 下载

https://dev.mysql.com/downloads/mysql/ 选择:

4.2 安装依赖

# Ubuntu / Debian
sudo apt install libaio1 libncurses5 -y

# CentOS / RHEL
sudo yum install libaio numactl-libs -y

4.3 解压到目标目录

tar -zxvf mysql-9.1.0-linux-glibc2.17-x86_64.tar.gz
sudo mv mysql-9.1.0-linux-glibc2.17-x86_64 /usr/local/mysql

4.4 创建用户和数据目录

sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
sudo mkdir -p /usr/local/mysql/data /usr/local/mysql/log
sudo chown -R mysql:mysql /usr/local/mysql

4.5 初始化

cd /usr/local/mysql
sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

初始化后会输出临时 root 密码,记录下来。

4.6 配置 my.cnf

sudo tee /etc/my.cnf << 'EOF'
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/usr/local/mysql/mysqld.pid
EOF

4.7 注册 systemd 服务

sudo tee /etc/systemd/system/mysqld.service << 'EOF'
[Unit]
Description=MySQL Server
Documentation=https://dev.mysql.com/doc/refman/en/
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
Restart=on-failure
RestartSec=10s
User=mysql
Group=mysql

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl start mysqld
sudo systemctl enable mysqld

软链接方便调用:

sudo ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

五、Docker 方式(最干净)

# 下载最新版镜像
docker pull mysql:latest

# 启动(首次会自动初始化)
docker run -d --name mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_strong_password \
  -e MYSQL_DATABASE=app \
  mysql:latest

# 查看日志获取临时密码
docker logs mysql 2>&1 | grep "temporary password"

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

持久化数据(必须):

docker run -d --name mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_strong_password \
  -v /path/to/mysql-data:/var/lib/mysql \
  mysql:latest

六、Windows(开发/测试用)

6.1 安装包方式(MSI)

  1. 下载:https://dev.mysql.com/downloads/installer/
  2. 运行安装包,选择 “Full”“Server only”
  3. 按向导一路 Next,设好 root 密码
  4. 安装完成后打开 MySQL Workbench 或命令行客户端

6.2 压缩包方式(zip)

  1. 下载:https://dev.mysql.com/downloads/mysql/ → 选 Windows (x86, 64-bit), ZIP Archive
  2. 解压到 C:\mysql
  3. 创建配置文件 C:\mysql\my.ini
    [mysqld]
    basedir=C:\\mysql
    datadir=C:\\mysql\\data
    port=3306
  4. 命令行初始化(首次必须):
    cd C:\mysql\bin
    mysqld --initialize --console
  5. 注册服务:
    mysqld --install MySQL --defaults-file=C:\mysql\my.ini
  6. 启动服务:
    net start MySQL
  7. 登录(用初始化时生成的临时密码):
    mysql -u root -p

⚠️ Windows 版仅建议开发测试,生产环境用 Linux。


七、初始化后的安全配置

首次装完必须跑(不管哪种安装方式):

sudo mysql_secure_installation

交互式完成以下设置:

√ 设置 root 密码(或确认现有密码)
√ 移除匿名用户
√ 禁止 root 远程登录
√ 删除 test 数据库
√ 刷新权限

八、常用命令速查

8.1 连接 MySQL

# 本地连接(socket 或 127.0.0.1)
mysql -u root -p

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

# Docker 容器内连接
docker exec -it mysql mysql -u root -p

8.2 数据库操作

-- 查看所有数据库
SHOW DATABASES;

-- 创建数据库
CREATE DATABASE app_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 切换数据库
USE app_db;

-- 删除数据库(危险!)
DROP DATABASE app_db;

8.3 用户 & 权限

-- 创建用户
CREATE USER 'app'@'localhost' IDENTIFIED BY 'StrongPass123!';

-- 创建可远程访问的用户
CREATE USER 'app'@'%' IDENTIFIED BY 'StrongPass123!';

-- 授权
GRANT ALL PRIVILEGES ON app_db.* TO 'app'@'localhost';
GRANT SELECT, INSERT ON app_db.* TO 'readonly_user'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

-- 查看用户权限
SHOW GRANTS FOR 'app'@'localhost';

8.4 服务管理

# apt/yum 安装
sudo systemctl start mysql       # 启动
sudo systemctl stop mysql        # 停止
sudo systemctl restart mysql    # 重启
sudo systemctl status mysql     # 状态

# 二进制安装
sudo /usr/local/mysql/support-files/mysql.server start
sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server restart

# 查看版本
mysql --version
mysqld --version

8.5 日志 & 状态

# 查看 MySQL 状态(连接数、QPS、缓存命中率等)
mysqladmin -u root -p status

# 查看所有变量
SHOW VARIABLES;
SHOW VARIABLES LIKE 'max_connections';

# 查看运行线程
SHOW PROCESSLIST;

# 查看慢查询日志配置
SHOW VARIABLES LIKE 'slow_query%';

# 二进制安装的日志位置(默认)
# /var/log/mysqld.log     (yum 安装)
# /usr/local/mysql/log/   (编译安装)

8.6 备份 & 恢复

# 备份(所有数据库)
mysqldump -u root -p --all-databases > backup_all.sql

# 备份单个数据库
mysqldump -u root -p app_db > backup_app_db.sql

# 备份指定表
mysqldump -u root -p app_db users orders > backup_tables.sql

# 恢复
mysql -u root -p < backup_all.sql
mysql -u root -p app_db < backup_app_db.sql

九、常见问题 & 解决方案

#问题原因解决
1登录报错 Access denied for user 'root'@'localhost'密码错误或认证插件问题sudo mysql(Debian 系免密)直接进;或查 /var/log/mysqld.log 临时密码;或重置密码
2忘记 root 密码停服务 → --skip-grant-tables 启动 → 无密码登录 → ALTER USER 重置密码 → 重启
3端口 3306 被占用其他 MySQL 实例或 MariaDB 占用了 3306sudo lsof -i :3306 查进程;MariaDB 默认也用 3306,可停掉或改 MySQL 端口
4初始化报错 FATAL ERROR: cannot find libaio缺少 libaio 依赖见上文”安装依赖”章节
5mysqld: ready for connections 但连不上防火墙拦了 3306 或绑定了 127.0.0.1sudo firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload;检查 bind-address=0.0.0.0
6Docker 容器启动后立刻 exit数据目录权限或配置文件问题docker logs mysql 看错误日志;多数是宿主机目录权限不够
7中文乱码字符集配置不对my.cnf 的 [mysqld] 下加 character-set-server=utf8mb4 + [mysql] 下加 default-character-set=utf8mb4
8max_connections 不够用连接数超限临时:SET GLOBAL max_connections=500;永久:my.cnf 里加 max_connections=500
9升级 MySQL 后启动失败数据字典不兼容升级前先备份;MySQL 9.x 不支持从太老的版本直接升级,先升到 8.0 再升 9.x
10Windows zip 版 mysqld 不是内部命令没有 cd 到 bin 目录或没有管理员权限用完整路径 C:\mysql\bin\mysqld.exe;右键用”管理员身份运行”CMD
11mysql_secure_installation 报错 can't connect to local MySQL serverMySQL 服务没启动sudo systemctl start mysql 先把服务跑起来
12Too many connections并发连接超过 max_connections紧急:mysqladmin -u root -p processlist 查谁占着连接;调大 max_connections
13Table is marked as crashed意外关闭导致表损坏REPAIR TABLE table_name;;或 myisamchk -r /path/to/table.MYI(MyISAM 引擎)

十、配置参考(生产环境关键参数)

在 my.cnf 的 [mysqld] 下添加:

[mysqld]
# 基础
bind-address = 0.0.0.0
port = 3306
max_connections = 500

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

# InnoDB(缓冲池大小,生产环境设为本机内存的 60-70%)
innodb_buffer_pool_size = 2G

# 日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

# 二进制日志(主从复制/数据恢复必备)
log_bin = /var/log/mysql/mysql-bin
expire_logs_days = 7

# 允许大小写不敏感(Windows 必须设为 1)
lower_case_table_names = 1

十一、快速验证清单

# 1. 服务状态
sudo systemctl status mysql     # 或 docker ps

# 2. 版本确认
mysql --version

# 3. 连接测试
mysql -u root -p -e "SELECT VERSION();"

# 4. 安全初始化
mysql_secure_installation

# 5. 查看默认数据库
mysql -u root -p -e "SHOW DATABASES;"

全部通过即可投入使用。


Share this post on:

Previous Post
别再手动管理异步状态了!Pinia Colada 给 Vue 开发者带来的新选择
Next Post
OpenClaw 安装 & 卸载教程(2026 最新)