一、MySQL初步认识1. 什么是MySQLMySQL是一个开源的关系型数据库管理系统RDBMS使用最常用的数据库管理语言——结构化查询语言SQL进行数据库管理。textMySQL 特点 ├── 开源免费也有商业版 ├── 高性能、高可靠性 ├── 跨平台支持Windows、Linux、macOS ├── 支持多种存储引擎 ├── 支持事务处理 ├── 支持主从复制 ├── 支持分区和分表 └── 提供丰富的API接口2. 数据库基本概念sql-- 数据库术语对照 MySQL术语 → 说明 ---------------------------------------- 数据库(Database) → 存储数据的容器 表(Table) → 数据的矩阵结构 行(Row) → 一条记录 列(Column) → 一个字段 主键(Primary Key) → 唯一标识一条记录 外键(Foreign Key) → 表与表之间的关联 索引(Index) → 提高查询速度 视图(View) → 虚拟表 存储过程(Procedure) → 预编译的SQL语句 触发器(Trigger) → 自动执行的SQL3. MySQL版本发展textMySQL版本历史 5.5 (2010年) → InnoDB成为默认引擎 5.6 (2013年) → 全文索引、性能提升 5.7 (2015年) → JSON支持、GIS支持 8.0 (2018年) → 窗口函数、CTE、角色管理 8.1 (2023年) → 持续更新性能优化 版本选择建议 ├── 新项目MySQL 8.0 或更高 ├── 旧项目兼容MySQL 5.7 ├── 生产环境选择最新稳定版 └── 学习环境8.0 社区版4. MySQL与MariaDB关系textMySQL (1995) - 被Sun收购 (2008) - 被Oracle收购 (2010) ↓ MariaDB (2009) - MySQL创始人创建完全兼容MySQL ↓ 分支关系 ├── MySQLOracle公司维护 ├── MariaDB社区维护 ├── Percona ServerPercona公司维护 └── 兼容性MariaDB兼容MySQL可无缝切换二、MySQL应用场景1. 典型应用场景text1. Web网站 ├── 电商网站用户、商品、订单数据 ├── 内容管理文章、分类、评论 ├── 社交平台用户关系、动态 └── 论坛/BBS帖子、回复 2. 企业应用 ├── ERP系统 ├── CRM系统 ├── OA系统 └── 进销存管理 3. 数据分析 ├── 数据仓库 ├── 日志分析 └── 商业智能 4. 嵌入式应用 ├── 移动APP ├── 桌面软件 └── 物联网设备2. 适用规模sql-- MySQL可以支持的规模 单表记录数百万到亿级 数据库大小GB到TB级 并发连接数百到数千 读写比例读多写少 -- 性能指标参考 每秒查询数(QPS)数千到数万 每秒事务数(TPS)数百到数千 响应时间毫秒级三、Linux环境安装MySQL1. 系统要求检查bash# 1. 检查操作系统 cat /etc/os-release uname -a # 2. 检查内存推荐至少1GB free -h # 3. 检查磁盘空间推荐至少10GB df -h # 4. 检查端口3306是否被占用 netstat -tlnp | grep 3306 ss -tlnp | grep 3306 # 5. 检查防火墙 systemctl status firewalld iptables -L -n # 6. 关闭SELinux可选 getenforce setenforce 0 # 临时关闭 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config # 永久关闭2. 安装方式选择bash# MySQL安装方式对比 1. 包管理器安装简单、易维护yum/apt 2. 官方仓库安装版本新、更新方便 3. 二进制安装灵活、可定制 4. 源码编译安装高度定制、性能优化 5. Docker安装快速部署、隔离性好 # 本文主要介绍前两种方式3. CentOS/RHEL系统安装3.1 使用官方YUM仓库安装bash# 1. 添加MySQL官方YUM仓库 # CentOS 7 yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm # CentOS 8 yum install -y https://dev.mysql.com/get/mysql80-community-release-el8-4.noarch.rpm # CentOS 9 yum install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm # 2. 查看可用的MySQL版本 yum repolist all | grep mysql # 3. 选择版本默认8.0如需5.7请切换 # 禁用8.0启用5.7 yum-config-manager --disable mysql80-community yum-config-manager --enable mysql57-community # 4. 安装MySQL yum install -y mysql-community-server # 5. 安装完成后查看版本 mysql --version3.2 使用EPEL仓库安装MariaDBbash# 1. 添加EPEL仓库 yum install -y epel-release # 2. 安装MariaDB yum install -y mariadb-server mariadb # 3. 启动服务 systemctl start mariadb systemctl enable mariadb3.3 二进制安装通用Linuxbash# 1. 下载MySQL二进制包 cd /usr/local/src wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz # 2. 解压 tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz mv mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql # 3. 创建mysql用户和组 groupadd mysql useradd -r -g mysql -s /bin/false mysql # 4. 创建数据目录 mkdir -p /data/mysql chown -R mysql:mysql /data/mysql chmod 750 /data/mysql # 5. 初始化数据库 cd /usr/local/mysql bin/mysqld --initialize --usermysql --basedir/usr/local/mysql --datadir/data/mysql # 记录初始密码显示在输出中 # [Note] A temporary password is generated for rootlocalhost: xxxxxxxx # 6. 配置文件 cat /etc/my.cnf EOF [client] port 3306 socket /tmp/mysql.sock default-character-set utf8mb4 [mysql] prompt\\u\\h [\\d] no-auto-rehash default-character-set utf8mb4 [mysqld] user mysql port 3306 basedir /usr/local/mysql datadir /data/mysql socket /tmp/mysql.sock pid-file /data/mysql/mysql.pid log-error /data/mysql/error.log character-set-server utf8mb4 collation-server utf8mb4_unicode_ci init-connect SET NAMES utf8mb4 # 连接设置 max_connections 500 max_connect_errors 100 wait_timeout 600 interactive_timeout 28800 # 存储引擎 default-storage-engine InnoDB # InnoDB设置 innodb_buffer_pool_size 1G innodb_log_file_size 256M innodb_flush_log_at_trx_commit 2 innodb_file_per_table 1 # 字符集 skip-character-set-client-handshake EOF # 7. 设置systemd服务 cat /etc/systemd/system/mysqld.service EOF [Unit] DescriptionMySQL Server Documentationman:mysqld(8) Documentationhttp://dev.mysql.com/doc/refman/en/using-systemd.html Afternetwork.target Aftersyslog.target [Service] Usermysql Groupmysql Typeforking PIDFile/data/mysql/mysql.pid ExecStart/usr/local/mysql/support-files/mysql.server start ExecStop/usr/local/mysql/support-files/mysql.server stop ExecReload/bin/kill -HUP $MAINPID TimeoutSec300 PrivateTmptrue [Install] WantedBymulti-user.target EOF # 8. 添加环境变量 echo export PATH/usr/local/mysql/bin:$PATH /etc/profile source /etc/profile # 9. 启动服务 systemctl daemon-reload systemctl start mysqld systemctl enable mysqld4. Ubuntu/Debian系统安装4.1 使用APT仓库安装bash# 1. 更新包索引 apt update # 2. 安装MySQL 8.0Ubuntu 20.04默认 apt install -y mysql-server # 3. 或者添加MySQL官方APT仓库 # 下载APT仓库配置包 wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb # 安装仓库配置会提示选择版本 dpkg -i mysql-apt-config_0.8.24-1_all.deb # 更新包索引 apt update # 安装MySQL apt install -y mysql-server # 4. 安装MariaDB apt install -y mariadb-server4.2 使用Percona仓库bash# 添加Percona仓库 wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb dpkg -i percona-release_latest.generic_all.deb apt update # 安装Percona Server apt install -y percona-server-server5. Docker安装MySQLbash# 1. 安装Docker # CentOS yum install -y docker-ce # Ubuntu apt install -y docker.io # 2. 启动Docker systemctl start docker systemctl enable docker # 3. 拉取MySQL镜像 docker pull mysql:8.0 docker pull mysql:5.7 # 4. 运行MySQL容器 # 简单运行 docker run -d \ --name mysql8 \ -e MYSQL_ROOT_PASSWORDroot123 \ -p 3306:3306 \ mysql:8.0 # 带数据卷的完整运行 docker run -d \ --name mysql8 \ --restart always \ -e MYSQL_ROOT_PASSWORDroot123 \ -e MYSQL_DATABASEtestdb \ -e MYSQL_USERtestuser \ -e MYSQL_PASSWORDtestpass \ -p 3306:3306 \ -v /data/mysql/data:/var/lib/mysql \ -v /data/mysql/conf:/etc/mysql/conf.d \ -v /data/mysql/logs:/var/log/mysql \ mysql:8.0 \ --character-set-serverutf8mb4 \ --collation-serverutf8mb4_unicode_ci \ --max_connections500 # 5. 进入容器 docker exec -it mysql8 mysql -uroot -p # 6. 查看日志 docker logs mysql8 # 7. 备份数据库 docker exec mysql8 mysqldump -uroot -proot123 --all-databases backup.sql # 8. Docker Compose方式 cat docker-compose.yml EOF version: 3.8 services: mysql: image: mysql:8.0 container_name: mysql8 restart: always environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: appdb MYSQL_USER: appuser MYSQL_PASSWORD: apppass ports: - 3306:3306 volumes: - ./mysql/data:/var/lib/mysql - ./mysql/conf:/etc/mysql/conf.d - ./mysql/logs:/var/log/mysql command: --character-set-serverutf8mb4 --collation-serverutf8mb4_unicode_ci --max_connections500 EOF docker-compose up -d四、Windows系统安装MySQL1. 下载MySQL安装包powershell# 1. 访问MySQL官网下载 # https://dev.mysql.com/downloads/mysql/ # 选择版本 # Windows (x86, 64-bit), MSI Installer # 或下载ZIP压缩包 # 2. 使用winget安装Windows 10/11 winget search mysql winget install MySQL.Server2. MSI安装步骤powershell# 安装步骤 1. 双击下载的MSI安装包 2. 选择安装类型 - Developer Default开发默认 - Server only仅服务器 - Client only仅客户端 - Full全部安装 - Custom自定义 3. 选择安装路径建议C:\Program Files\MySQL\MySQL Server 8.0 4. 配置MySQL服务器 - 配置类型Development Computer开发机 - 端口3306 - 认证方式Use Strong Password Encryption 5. 设置root密码必须记住 6. 配置Windows Service - Service Name: MySQL80 - 启动类型Automatic 7. 应用配置并完成安装3. ZIP包安装免安装版powershell# 1. 解压ZIP包到指定目录 # 例如C:\mysql-8.0.33-winx64 # 2. 创建配置文件 my.ini # C:\mysql-8.0.33-winx64\my.ini [client] port3306 default-character-setutf8mb4 [mysql] default-character-setutf8mb4 prompt\\u\\h [\\d] [mysqld] # 基础设置 port3306 basedirC:/mysql-8.0.33-winx64 datadirC:/mysql-8.0.33-winx64/data character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci # 连接设置 max_connections500 max_connect_errors100 # 存储引擎 default-storage-engineINNODB # InnoDB设置 innodb_buffer_pool_size1G innodb_log_file_size256M innodb_flush_log_at_trx_commit2 innodb_file_per_table1 # 日志 log-errorerror.log slow_query_log1 slow_query_log_fileslow.log long_query_time2 # 3. 初始化数据库 # 以管理员身份运行cmd cd C:\mysql-8.0.33-winx64\bin mysqld --initialize --console # 记录初始密码显示在输出中 # 4. 安装Windows服务 mysqld --install MySQL80 # 5. 启动服务 net start MySQL80 # 6. 登录并修改密码 mysql -uroot -p ALTER USER rootlocalhost IDENTIFIED BY NewPassword123!; # 7. 添加到系统PATH # 将 C:\mysql-8.0.33-winx64\bin 添加到系统环境变量 Path 中五、MySQL初始化配置1. 启动MySQL服务bash# CentOS/RHEL systemctl start mysqld systemctl enable mysqld systemctl status mysqld # Ubuntu systemctl start mysql systemctl enable mysql # 通用 service mysql start service mysql status # 查看进程 ps aux | grep mysql # 查看端口 netstat -tlnp | grep 33062. 获取初始密码bash# MySQL 5.7 会生成随机初始密码 # CentOS/RHEL grep temporary password /var/log/mysqld.log # Ubuntu grep temporary password /var/log/mysql/error.log # 或查看完整日志 cat /var/log/mysqld.log | grep password # 如果没有密码可能需要空密码登录 mysql -u root3. 安全配置向导bash# 运行安全配置脚本 mysql_secure_installation # 交互过程 # 1. 输入当前root密码 # 2. 是否修改root密码 (y/n) # 3. 输入新密码 # 4. 是否移除匿名用户 (y/n) - y # 5. 是否禁止root远程登录 (y/n) - y # 6. 是否移除test数据库 (y/n) - y # 7. 是否重新加载权限表 (y/n) - y # 示例输出 Enter password: **** New password: ******** Re-enter new password: ******** Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y All done!4. 手动安全配置sql-- 登录MySQL mysql -u root -p -- 1. 修改root密码 ALTER USER rootlocalhost IDENTIFIED BY NewPassword123!; -- 2. 删除匿名用户 DELETE FROM mysql.user WHERE User; -- 3. 禁止root远程登录 DELETE FROM mysql.user WHERE Userroot AND Host NOT IN (localhost, 127.0.0.1, ::1); -- 4. 删除测试数据库 DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Dbtest OR Dbtest\\_%; -- 5. 创建普通用户 CREATE USER appuserlocalhost IDENTIFIED BY AppPass123!; CREATE USER appuser% IDENTIFIED BY AppPass123!; -- 6. 授权 GRANT ALL PRIVILEGES ON *.* TO appuserlocalhost WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO appuser% WITH GRANT OPTION; -- 7. 刷新权限 FLUSH PRIVILEGES; -- 8. 查看用户 SELECT User, Host, authentication_string FROM mysql.user;5. 配置文件优化ini# /etc/my.cnf 或 /etc/mysql/my.cnf [client] port 3306 socket /var/lib/mysql/mysql.sock default-character-set utf8mb4 [mysql] prompt\\u\\h [\\d] no-auto-rehash default-character-set utf8mb4 [mysqld] user mysql port 3306 socket /var/lib/mysql/mysql.sock pid-file /var/run/mysqld/mysqld.pid basedir /usr datadir /var/lib/mysql tmpdir /tmp lc-messages-dir /usr/share/mysql skip-external-locking bind-address 0.0.0.0 # 字符集 character-set-server utf8mb4 collation-server utf8mb4_unicode_ci init-connect SET NAMES utf8mb4 skip-character-set-client-handshake # 连接设置 max_connections 500 max_connect_errors 100 connect_timeout 10 wait_timeout 600 max_allowed_packet 64M interactive_timeout 28800 # 缓冲区 key_buffer_size 256M sort_buffer_size 2M read_buffer_size 2M read_rnd_buffer_size 4M join_buffer_size 2M # 临时表 tmp_table_size 64M max_heap_table_size 64M # 表缓存 table_open_cache 2048 table_definition_cache 2048 # 线程缓存 thread_cache_size 256 thread_stack 256K # 查询缓存MySQL 8.0已移除 # query_cache_type 1 # query_cache_size 64M # query_cache_limit 2M # InnoDB设置 default-storage-engine InnoDB innodb_buffer_pool_size 2G innodb_log_file_size 512M innodb_log_buffer_size 16M innodb_flush_log_at_trx_commit 2 innodb_flush_method O_DIRECT innodb_file_per_table 1 innodb_open_files 2048 innodb_io_capacity 2000 innodb_read_io_threads 4 innodb_write_io_threads 4 # 日志设置 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_queries_not_using_indexes 1 # 二进制日志 server-id 1 log_bin /var/log/mysql/mysql-bin.log binlog_format ROW expire_logs_days 7 max_binlog_size 100M # 安全设置 local_infile 0 skip_symbolic_links yes secure_file_priv /var/lib/mysql-files [mysqldump] quick quote-names max_allowed_packet 64M六、验证安装1. 基本验证bash# 1. 检查版本 mysql --version # 输出示例mysql Ver 8.0.33 for Linux on x86_64 (MySQL Community Server) # 2. 查看服务状态 systemctl status mysqld # 3. 查看进程 ps aux | grep mysql # 4. 查看端口 netstat -tlnp | grep 3306 # 5. 测试登录 mysql -u root -p # 输入密码后进入MySQL提示符2. 执行简单SQLsql-- 登录后执行 mysql SELECT VERSION(); mysql SELECT NOW(); mysql SELECT USER(); mysql SELECT DATABASE(); -- 创建测试数据库 mysql CREATE DATABASE testdb; mysql USE testdb; -- 创建测试表 mysql CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, age INT, department VARCHAR(50), salary DECIMAL(10,2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 插入数据 mysql INSERT INTO employees (name, age, department, salary) VALUES (张三, 28, 技术部, 12000.00), (李四, 32, 市场部, 10000.00), (王五, 35, 技术部, 15000.00); -- 查询数据 mysql SELECT * FROM employees; mysql SELECT department, AVG(salary) as avg_salary FROM employees GROUP BY department; -- 删除测试数据 mysql DROP DATABASE testdb;3. 性能测试bash# 1. 使用mysqlslap进行压力测试 mysqlslap --userroot --password --concurrency50 --iterations10 \ --querySELECT * FROM mysql.user; --create-schemamysql # 2. 查看数据库状态 mysql -e SHOW STATUS LIKE %connect%; mysql -e SHOW STATUS LIKE %thread%; # 3. 查看变量 mysql -e SHOW VARIABLES LIKE %buffer%; # 4. 查看进程列表 mysql -e SHOW PROCESSLIST;4. 编写测试脚本bash#!/bin/bash # mysql_test.sh - MySQL连接测试脚本 MYSQL_USERroot MYSQL_PASSyour_password MYSQL_HOSTlocalhost MYSQL_PORT3306 echo MySQL连接测试 echo # 1. 测试网络连接 echo 1. 测试端口连通性... nc -zv $MYSQL_HOST $MYSQL_PORT 21 if [ $? -eq 0 ]; then echo ✓ 端口可达 else echo ✗ 端口不可达 fi # 2. 测试MySQL登录 echo 2. 测试MySQL登录... mysql -u$MYSQL_USER -p$MYSQL_PASS -h$MYSQL_HOST -P$MYSQL_PORT -e SELECT 1 /dev/null 21 if [ $? -eq 0 ]; then echo ✓ 登录成功 else echo ✗ 登录失败 fi # 3. 获取MySQL信息 echo 3. MySQL信息: mysql -u$MYSQL_USER -p$MYSQL_PASS -e SELECT VERSION() as Version, NOW() as CurrentTime, USER() as User\G # 4. 获取数据库列表 echo 4. 数据库列表: mysql -u$MYSQL_USER -p$MYSQL_PASS -e SHOW DATABASES; # 5. 获取状态信息 echo 5. 关键状态指标: mysql -u$MYSQL_USER -p$MYSQL_PASS -e SHOW STATUS LIKE Threads_connected; mysql -u$MYSQL_USER -p$MYSQL_PASS -e SHOW STATUS LIKE Questions; mysql -u$MYSQL_USER -p$MYSQL_PASS -e SHOW STATUS LIKE Slow_queries; echo 测试完成七、MySQL常用命令1. 服务管理命令bash# 启动 systemctl start mysqld service mysql start # 停止 systemctl stop mysqld service mysql stop # 重启 systemctl restart mysqld service mysql restart # 重载配置 systemctl reload mysqld mysqladmin reload # 查看状态 systemctl status mysqld service mysql status2. 连接管理命令bash# 本地连接 mysql -u root -p mysql -u root -p123456 # 远程连接 mysql -u root -p -h 192.168.1.100 -P 3306 # 使用socket连接 mysql -u root -p -S /tmp/mysql.sock # 执行单条命令 mysql -u root -p -e SHOW DATABASES; # 执行SQL文件 mysql -u root -p backup.sql # 带配置文件连接 mysql --defaults-file/etc/my.cnf -u root -p3. 管理命令bash# 查看MySQL进程 ps aux | grep mysql # 查看端口 netstat -tlnp | grep mysql # 查看日志 tail -f /var/log/mysql/error.log tail -f /var/log/mysql/slow.log # 备份数据库 mysqldump -u root -p --all-databases all.sql mysqldump -u root -p --databases db1 db2 dbs.sql mysqldump -u root -p db1 table1 table.sql # 恢复数据库 mysql -u root -p all.sql mysql -u root -p db1 backup.sql # 优化表 mysqlcheck -u root -p --optimize --all-databases # 修复表 mysqlcheck -u root -p --repair --all-databases # 检查表 mysqlcheck -u root -p --check --all-databases八、常见问题排查1. 无法启动MySQLbash# 1. 查看错误日志 tail -f /var/log/mysql/error.log # 2. 检查端口冲突 netstat -tlnp | grep 3306 # 3. 检查权限 chown -R mysql:mysql /var/lib/mysql chmod -R 755 /var/lib/mysql # 4. 检查配置文件语法 mysqld --verbose --help | grep -A 1 Default options # 5. 尝试手动启动 mysqld --console --skip-grant-tables2. 忘记root密码bash# 方法1使用init-file推荐 # 创建密码重置文件 cat /tmp/mysql-init EOF ALTER USER rootlocalhost IDENTIFIED BY NewPassword123!; FLUSH PRIVILEGES; EOF # 重启MySQL并加载init-file systemctl stop mysqld mysqld --init-file/tmp/mysql-init # 或使用配置文件 echo init-file/tmp/mysql-init /etc/my.cnf systemctl start mysqld # 方法2跳过授权表 systemctl stop mysqld mysqld_safe --skip-grant-tables mysql -u root # 在MySQL中执行 FLUSH PRIVILEGES; ALTER USER rootlocalhost IDENTIFIED BY NewPassword123!; quit # 重启正常模式 systemctl restart mysqld3. 连接问题bash# 1. 检查网络 ping 192.168.1.100 telnet 192.168.1.100 3306 # 2. 检查防火墙 iptables -L -n | grep 3306 firewall-cmd --list-all # 3. 检查MySQL配置 grep bind-address /etc/my.cnf # bind-address应该为0.0.0.0允许远程连接 # 4. 检查用户权限 mysql -e SELECT User, Host FROM mysql.user WHERE Userroot; # 5. 授权远程访问 GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY password WITH GRANT OPTION; FLUSH PRIVILEGES;九、卸载MySQL1. CentOS/RHEL卸载bash# 1. 停止服务 systemctl stop mysqld # 2. 查看已安装的包 rpm -qa | grep -i mysql # 3. 卸载包 yum remove mysql-community-server mysql-community-client \ mysql-community-common mysql-community-libs # 4. 删除配置文件和数据 rm -rf /var/lib/mysql rm -rf /etc/my.cnf rm -rf /var/log/mysql # 5. 删除用户 userdel mysql groupdel mysql2. Ubuntu/Debian卸载bash# 1. 停止服务 systemctl stop mysql # 2. 卸载包 apt purge mysql-server mysql-client mysql-common apt autoremove # 3. 删除配置文件和数据 rm -rf /var/lib/mysql rm -rf /etc/mysql rm -rf /var/log/mysql # 4. 删除用户 deluser mysql delgroup mysql十、总结MySQL安装方式对比安装方式优点缺点适用场景YUM/APT简单、易维护版本可能较旧生产环境官方仓库版本新、更新方便需添加仓库生产环境二进制灵活、可定制配置复杂特殊需求源码编译高度优化耗时、复杂性能优化Docker快速、隔离性能略差开发测试安装后检查清单MySQL服务正常运行root密码已修改匿名用户已删除禁止root远程登录test数据库已删除配置文件已优化防火墙已配置日志目录权限正确备份策略已制定