温馨提示×

Debian MySQL使用教程大全

小樊
39
2025-12-06 21:45:00
栏目: 云计算

Debian 上 MySQL 从安装到进阶的实用教程

一 安装与初始化

  • 更新系统并安装
    • 执行:sudo apt update && sudo apt upgrade -y
    • 安装:sudo apt install mysql-server -y
    • 安装完成后会自动启动,可用 sudo systemctl status mysql 查看状态。
  • 运行安全配置向导
    • 执行:sudo mysql_secure_installation
    • 按提示设置 root 密码、删除匿名用户、禁止 root 远程登录、删除测试库并刷新权限(建议全部选择 Y)。
  • 登录验证
    • 执行:mysql -u root -p,输入刚设置的密码进入 MySQL 命令行。

二 服务管理与基础配置

  • 服务管理
    • 启动/停止/重启/状态:sudo systemctl start|stop|restart|status mysql
    • 开机自启:sudo systemctl enable mysql
  • 配置文件与关键参数
    • 主配置文件路径:/etc/mysql/mysql.conf.d/mysqld.cnf(或 /etc/mysql/my.cnf
    • 常用参数示例:
      • bind-address:监听地址,设为 127.0.0.1 仅本地,设为 0.0.0.0 允许远程(需配合防火墙与权限)
      • max_connections:最大连接数
      • innodb_buffer_pool_size:InnoDB 缓冲池大小(建议为可用内存的约 50%~70%
  • 远程访问与防火墙
    • 若需远程连接,修改 bind-address 并重启 MySQL
    • UFW:sudo ufw allow 3306/tcp
    • firewalld:sudo firewall-cmd --zone=public --add-service=mysql --permanent && sudo firewall-cmd --reload
  • 目录与文件(便于排障与备份)
    • 数据目录:/var/lib/mysql/
    • 错误日志:/var/log/mysql/error.log
    • 启动脚本:系统使用 systemd(不再使用传统的 /etc/init.d/mysql

三 用户与数据库常用操作

  • 登录:mysql -u root -p
  • 创建数据库与用户并授权
    CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPass!';
    GRANT ALL PRIVILEGES ON mydb.* TO 'appuser'@'localhost';
    FLUSH PRIVILEGES;
    
  • 创建远程用户(按需)
    CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPass!';
    GRANT ALL PRIVILEGES ON mydb.* TO 'appuser'@'%';
    FLUSH PRIVILEGES;
    
  • 常用查询
    • 查看库:SHOW DATABASES;
    • 查看用户:SELECT user,host FROM mysql.user;
    • 查看连接与状态:mysqladmin -u root -p status
  • 备份与恢复
    • 备份:mysqldump -u root -p mydb > mydb_backup.sql
    • 恢复:mysql -u root -p mydb < mydb_backup.sql

四 常见问题与排查

  • 无法启动
    • 查看日志:sudo tail -n50 /var/log/mysql/error.log
    • 若提示目录权限(如 /var/run/mysqld 不可写),执行:
      sudo mkdir -p /var/run/mysqld
      sudo chown mysql:adm /var/run/mysqld
      sudo systemctl restart mysql
      
  • 无法远程连接
    • 确认服务运行:sudo systemctl status mysql
    • 检查监听端口:sudo ss -lntp | grep 3306
    • 核对 bind-address 与防火墙(UFW/firewalld)是否放行 3306
    • 确认已创建允许远程的主机(如 'user'@'%')并授予权限
  • 忘记 root 密码
    • 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf,在 [mysqld] 下添加 skip-grant-tables
    • 重启:sudo systemctl restart mysql
    • 登录免密:mysql -u root
    • 重置密码(MySQL 8.0+ 示例):
      FLUSH PRIVILEGES;
      ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass!';
      FLUSH PRIVILEGES;
      
    • 删除 skip-grant-tables 并重启
  • 中文乱码
    • 配置 [client][mysqld] 使用 utf8mb4
      [client]
      default-character-set=utf8mb4
      
      [mysqld]
      character-set-server=utf8mb4
      collation-server=utf8mb4_unicode_ci
      
    • 重启后验证:SHOW VARIABLES LIKE 'character_set%';

五 进阶与性能优化

  • 基础性能参数(示例,按内存与负载调整)
    • innodb_buffer_pool_size:建议为物理内存的 50%~70%
    • max_connections:结合并发与内存评估(如 151 起步,视业务增减)
    • query_cache_type=0(MySQL 8.0 已移除查询缓存,重点优化慢查询与索引)
  • 慢查询日志
    [mysqld]
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/slow.log
    long_query_time = 2
    log_queries_not_using_indexes = 1
    
  • 监控与维护
    • 内置工具:mysqladmin statusSHOW PROCESSLIST;
    • 建议接入 Percona Monitoring and Management(PMM) 或类似平台做长期可视化监控
  • 升级与迁移
    • 建议先在测试环境验证,使用 mysqldump 全量备份后再升级
    • 大版本升级前阅读官方变更说明,注意认证插件、默认参数与废弃特性变化
  • 安全建议
    • 仅开放必要端口与来源 IP
    • 使用强密码与最小权限原则
    • 定期更新系统与 MySQL 版本,审计用户与权限变更

0