MySQL 数据库

Debian 安装 MySQL 5.7

使用 MySQL apt 仓库安装

wget https://repo.mysql.com/mysql-apt-config_0.8.24-1_all.deb
dpkg -i mysql-apt-config_0.8.24-1_all.deb
apt update
apt install mysql-community-server

# 执行完 mysql-community-server 安装后,会提示输入 MySQL root 用户的密码

手动下载 .deb 安装

sudo apt update
sudo apt install -y libmecab2 libncurses6

wget https://mirrors.aliyun.com/debian/pool/main/liba/libaio/libaio1_0.3.113-4_amd64.deb
sudo dpkg -i libaio1_0.3.113-4_amd64.deb

wget https://repo.mysql.com/apt/debian/pool/mysql-5.7/m/mysql-community/mysql-common_5.7.42-1debian10_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-5.7/m/mysql-community/mysql-community-client_5.7.42-1debian10_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-5.7/m/mysql-community/mysql-client_5.7.42-1debian10_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-5.7/m/mysql-community/mysql-community-server_5.7.42-1debian10_amd64.deb

sudo dpkg -i mysql-common_5.7.42-1debian10_amd64.deb
sudo dpkg -i mysql-community-client_5.7.42-1debian10_amd64.deb
sudo dpkg -i mysql-client_5.7.42-1debian10_amd64.deb
sudo dpkg -i mysql-community-server_5.7.42-1debian10_amd64.deb

# 执行完 mysql-community-server 安装后,会提示输入 MySQL root 用户的密码

Debian 安装 MySQL 8.0

使用 MySQL apt 仓库安装

wget https://repo.mysql.com/mysql-apt-config.deb
dpkg -i mysql-apt-config.deb
apt update
apt install mysql-community-server

# 执行完 mysql-community-server 安装后,会提示输入 MySQL root 用户的密码

手动下载 .deb 安装

sudo apt update
sudo apt install -y libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils

wget https://mirrors.aliyun.com/debian/pool/main/liba/libaio/libaio1_0.3.113-4_amd64.deb
sudo dpkg -i libaio1_0.3.113-4_amd64.deb

wget https://repo.mysql.com/apt/debian/pool/mysql-8.4/m/mysql-community/mysql-common_8.0.44-1debian12_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4/m/mysql-community/mysql-community-server-core_8.0.44-1debian12_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4/m/mysql-community/mysql-community-client-plugins_8.0.44-1debian12_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4/m/mysql-community/mysql-community-client-core_8.0.44-1debian12_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4/m/mysql-community/mysql-community-client_8.0.44-1debian12_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4/m/mysql-community/mysql-client_8.0.44-1debian12_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4/m/mysql-community/mysql-community-server_8.0.44-1debian12_amd64.deb

sudo dpkg -i mysql-common_8.0.44-1debian12_amd64.deb
sudo dpkg -i mysql-community-server-core_8.0.44-1debian12_amd64.deb
sudo dpkg -i mysql-community-client-plugins_8.0.44-1debian12_amd64.deb
sudo dpkg -i mysql-community-client-core_8.0.44-1debian12_amd64.deb
sudo dpkg -i mysql-community-client_8.0.44-1debian12_amd64.deb
sudo dpkg -i mysql-client_8.0.44-1debian12_amd64.deb
sudo dpkg -i mysql-community-server_8.0.44-1debian12_amd64.deb

# 执行完 mysql-community-server 安装后,会提示输入 MySQL root 用户的密码

Debian 安装 MySQL 8.4 LTS

使用 MySQL apt 仓库安装

wget https://repo.mysql.com/mysql-apt-config.deb
dpkg -i mysql-apt-config.deb
apt update
apt install mysql-community-server

# 执行完 mysql-community-server 安装后,会提示输入 MySQL root 用户的密码

手动下载 .deb 安装

sudo apt update
sudo apt install -y libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils

wget https://mirrors.aliyun.com/debian/pool/main/liba/libaio/libaio1_0.3.113-4_amd64.deb
sudo dpkg -i libaio1_0.3.113-4_amd64.deb

wget https://repo.mysql.com/apt/debian/pool/mysql-8.4-lts/m/mysql-community/mysql-common_8.4.7-1debian13_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4-lts/m/mysql-community/mysql-community-server-core_8.4.7-1debian13_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4-lts/m/mysql-community/mysql-community-client-plugins_8.4.7-1debian13_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4-lts/m/mysql-community/mysql-community-client-core_8.4.7-1debian13_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4-lts/m/mysql-community/mysql-community-client_8.4.7-1debian13_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4-lts/m/mysql-community/mysql-client_8.4.7-1debian13_amd64.deb
wget https://repo.mysql.com/apt/debian/pool/mysql-8.4-lts/m/mysql-community/mysql-community-server_8.4.7-1debian13_amd64.deb

sudo dpkg -i mysql-common_8.4.7-1debian13_amd64.deb
sudo dpkg -i mysql-community-server-core_8.4.7-1debian13_amd64.deb
sudo dpkg -i mysql-community-client-plugins_8.4.7-1debian13_amd64.deb
sudo dpkg -i mysql-community-client-core_8.4.7-1debian13_amd64.deb
sudo dpkg -i mysql-community-client_8.4.7-1debian13_amd64.deb
sudo dpkg -i mysql-client_8.4.7-1debian13_amd64.deb
sudo dpkg -i mysql-community-server_8.4.7-1debian13_amd64.deb

# 执行完 mysql-community-server 安装后,会提示输入 MySQL root 用户的密码

配置

远程连接

RENAME USER `root`@`localhost` TO `root`@`%`;

默认排序规则

vim /etc/mysql/mysql.conf.d/mysqld.cnf
collation-server=utf8mb4_general_ci

查看 MySQL 进程

SHOW
PROCESSLIST
SHOW
FULL
PROCESSLIST
SELECT *
FROM INFORMATION_SCHEMA.PROCESSLIST
ORDER BY TIME DESC

优化配置

参数 名称 默认值(8.0.44) 推荐
max_allowed_packet 允许的数据包大小 67108864(64M)
net_buffer_length 网络缓冲区大小 16384(16K)
innodb_buffer_pool_size InnoDB 缓冲池大小 134217728(128M) 建议为物理内存的 50%-70%
innodb_parallel_read_threads 并行导入线程数 4

[HY001][1038] Out of sort memory, consider increasing server sort buffer size

  • MySQL 需要执行排序操作(如 ORDER BYGROUP BY、表连接等)时,
    如果数据量超过当前 sort_buffer_size(排序缓冲区大小)的容量,
    会尝试使用磁盘临时文件辅助排序。
    若磁盘空间不足或配置不当,则会触发此错误。

  • 查看当前 sort_buffer_size 的值

    SHOW VARIABLES LIKE 'max_sort_length';
    # MySQL 8.0.25 默认值:262144(256k)
    

临时解决方案

  1. 重启/重新连接 MySQL失效
  2. 通常与 永久解决方案 一起使用
# 当前 MySQL 实例
set global sort_buffer_size = 2621440; # 2.5M
# 10M:10485760
# 25M:26214400
# 50M:52428800
# 100M:104857600
# 重启后失效
# 当前 Session
set session sort_buffer_size = 2621440; # 2.5M
# 10M:10485760
# 25M:26214400
# 50M:52428800
# 100M:104857600
# 仅在当前连接有效,重新连接失效

永久解决方案

  1. 需要 重启 MySQL 后才能生效
  2. 通常与 临时解决方案 一起使用
# Linux my.cnf
[mysqld]
sort_buffer_size = 2621440; # 2.5M
# 10M:10485760
# 25M:26214400
# 50M:52428800
# 100M:104857600
# Windows my.ini
[mysqld]
sort_buffer_size = 2621440; # 2.5M
# 10M:10485760
# 25M:26214400
# 50M:52428800
# 100M:104857600