首页主机资讯Ubuntu MySQL常见问题如何解决

Ubuntu MySQL常见问题如何解决

时间2025-12-08 20:42:04发布访客分类主机资讯浏览285
导读:Ubuntu 上 MySQL 常见问题与排查步骤 一 安装与登录 安装与启动 更新索引并安装:sudo apt update && sudo apt install mysql-server 检查状态:sudo syst...

Ubuntu 上 MySQL 常见问题与排查步骤

一 安装与登录

  • 安装与启动
    • 更新索引并安装:sudo apt update & & sudo apt install mysql-server
    • 检查状态:sudo systemctl status mysql;未运行则:sudo systemctl start mysql
    • 设置开机自启:sudo systemctl enable mysql
  • 安全初始化与登录
    • 运行安全向导:sudo mysql_secure_installation(设置 root 密码、移除匿名用户、禁止远程 root 等)
    • 本地登录:mysql -u root -p
    • 若安装时未设置密码或本地认证异常,可直接进入:sudo mysql,然后执行
      • ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’;
      • FLUSH PRIVILEGES;
  • 远程登录准备
    • 修改 root 允许远程:UPDATE mysql.user SET host=‘%’ WHERE user=‘root’; FLUSH PRIVILEGES;
    • 开放防火墙:sudo ufw allow 3306/tcp
    • 注意:生产环境不建议直接开放 root 远程,建议创建专用账号并限制来源 IP

二 服务无法启动与配置错误

  • 快速定位
    • 查看服务状态与日志:sudo systemctl status mysqlsudo journalctl -xesudo tail -n 50 /var/log/mysql/error.log
  • 常见修复
    • 权限与目录:数据目录属主应为 mysql:mysql,如:sudo chown -R mysql:mysql /var/lib/mysql
    • 配置与 PID/Socket:检查 /etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnfpid-filesocket 路径是否存在且一致;必要时修正后重启
    • 配置不存在或权限错误:确认 /etc/mysql/my.cnf 存在,权限 644、属主 mysql:mysql;若缺失可新建基础配置并重启
    • 安装/升级中断:执行 sudo dpkg --configure -a 完成配置
    • 表损坏:使用 mysqlcheck --all-databases --auto-repair 或引擎自带工具修复
    • 彻底重配(会重置配置与数据,谨慎):先备份数据,再 sudo apt purge mysql-server mysql-client 后重装

三 认证与远程连接问题

  • 认证插件不兼容
    • 现象:客户端报 Authentication plugin ‘caching_sha2_password’ cannot be loaded
    • 处理:在 MySQL 中将会话或目标用户的认证方式改为 mysql_native_password
      • 示例:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’; FLUSH PRIVILEGES;
  • 忘记 root 密码
    • 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf,在 [mysqld] 下临时加入 skip-grant-tables
    • 重启:sudo systemctl restart mysql
    • 无密码登录后重置:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’; FLUSH PRIVILEGES;
    • 移除 skip-grant-tables 并重启
  • Navicat/客户端连接失败
    • 典型错误 1130:Host ‘xxx’ is not allowed to connect to this MySQL server
    • 处理:在 mysql 库中将相应用户的 host 改为 % 或指定网段,再 FLUSH PRIVILEGES;
    • 确认监听端口:sudo netstat -tap | grep mysql 应看到 3306 处于 LISTEN
    • 开放云服务器安全组与系统防火墙 3306/tcp

四 字符集与时区及常用参数

  • 字符集
    • 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
      • [mysqld] 加入:character_set_server=utf8mb4
      • [client] 加入:default-character-set=utf8mb4
    • 重启:sudo systemctl restart mysql
    • 验证:SHOW VARIABLES LIKE ‘character_set%’;
  • 时区
    • 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
      • [mysqld] 加入:default-time_zone=‘+8:00’
    • 重启后验证:SHOW VARIABLES LIKE ‘%time_zone%’;
  • 包开发与编译依赖
    • 缺少 mysql.h:安装 sudo apt-get install libmysqlclient-dev
  • 大包与导入导出
    • 提升单包上限:在 [mysqld] 加入 max_allowed_packet=900M(按实际调整),重启
    • 验证:SHOW VARIABLES LIKE ‘%max_allowed_pack%’;

五 性能优化与维护

  • 关键配置(示例为 16GB 内存,按实际调整)
    • innodb_buffer_pool_size=8G~12G(约内存的 50%~70%)
    • innodb_log_file_size=256M
    • innodb_flush_log_at_trx_commit=1(安全性优先;追求吞吐可评估 0/2
    • max_connections(结合连接池与业务峰值)
  • 索引与查询
    • 使用 EXPLAIN 分析执行计划;避免 **SELECT ***;为高频条件列建立合适索引(含复合索引,遵循最左前缀)
  • 维护与监控
    • 定期 ANALYZE TABLE / OPTIMIZE TABLE;启用慢查询日志定位瓶颈
    • 监控工具:MySQL Performance SchemaPMM、企业监控等
    • 注意:MySQL 8.0 已移除查询缓存(query cache),无需再配置 query_cache_size

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu MySQL常见问题如何解决
本文地址: https://pptw.com/jishu/766312.html
ubuntu如何管理env变量 Ubuntu MySQL升级如何操作

游客 回复需填写必要信息