温馨提示×

Ubuntu MySQL常见问题有哪些

小樊
38
2025-12-31 23:05:51
栏目: 云计算

Ubuntu 上 MySQL 的常见问题清单与处理要点

一 安装与初始化阶段

  • 包管理与锁冲突:执行 apt 时出现 E: 无法获得锁 /var/lib/dpkg/lock/var/cache/apt/archives/lock,多为并行的 apt 进程导致。处理:确认无其它 apt 进程后,按需 kill 对应 PID,或删除锁文件再重试;必要时执行 sudo apt-get -f install 修复依赖。离线环境使用 dpkg -i 安装 DEB 包时缺依赖,同样可用 sudo apt-get -f install 自动补齐依赖。
  • 服务无法启动:安装后 systemctl status mysql 显示 failed。处理:优先查看 /var/log/mysql/error.log 定位语法/权限/端口等问题;检查数据目录权限 /var/lib/mysql(应为 mysql:mysql);确认 3306 端口未被占用(如被占用需停占用进程或修改 MySQL 端口);修正配置后重启服务。
  • 找不到配置文件:启动时提示找不到 my.cnf。处理:Ubuntu 常见搜索路径为 /etc/mysql/my.cnf、/etc/my.cnf、~/.my.cnf;若缺失可新建基础配置并重启;同时检查目录与文件权限(如 644)。

二 连接与认证问题

  • 本地 root 登录被拒:出现 ERROR 1045 (28000)。处理:先确认服务运行;若忘记或未知 root 密码,可使用 /etc/mysql/debian.cnf 中的 debian-sys-maint 用户登录后重置 root 密码;或执行 sudo mysql_secure_installation 完成初始化安全设置;必要时在 mysql 内执行 ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘new_password’; FLUSH PRIVILEGES;
  • 远程连接被拒:出现 ERROR 1130 (00000): Host ‘x.x.x.x’ is not allowed。处理:在 mysql 内为用户授予远程权限(如 GRANT ALL PRIVILEGES ON . TO ‘user’@‘%’ IDENTIFIED BY ‘pwd’; FLUSH PRIVILEGES;);检查 /etc/mysql/mysql.conf.d/mysqld.cnfbind-address(需要远程改为 0.0.0.0 或注释);确保防火墙放行 3306/tcp(如 sudo ufw allow 3306/tcp)。
  • 认证插件不兼容:客户端报 Authentication plugin ‘caching_sha2_password’ cannot be loaded。处理:在 mysql 内将用户认证方式改为兼容插件(如 ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘pwd’;),或升级客户端库以支持新插件。
  • 连接空闲超时导致“Broken pipe”:长空闲后被断开。处理:在连接池启用 testWhileIdle/validationQuery=SELECT 1,并设置 idle_test_period 小于服务器 wait_timeout(如 8 小时)以主动探活。

三 运行维护与性能问题

  • 启动失败排查流程:使用 systemctl status mysql 快速定位;查看 /var/log/mysql/error.log 获取详细错误;核对 datadir、socket、port 等关键配置;检查 /var/lib/mysql/var/log/mysql 权限;确认 3306 端口未被占用;必要时修正配置并重启。
  • 表只读:写入时报 ERROR 1036: Table ‘xxx’ is read only。处理:检查数据库目录与文件属主属组(应为 mysql:mysql),修复权限后重启;如因文件系统挂载为只读需先恢复读写。
  • 主机被阻塞:出现 Host is blocked because of many connection errors。处理:在 mysql 执行 FLUSH HOSTS; 或在命令行执行 mysqladmin flush-hosts 清空主机缓存;同时排查客户端错误连接来源并修复认证/网络问题。
  • 性能与连接瓶颈:高并发下出现 ERROR 1205 (Lock wait timeout)ERROR 2013 (Lost connection)。处理:调整关键参数(如 innodb_buffer_pool_size 设为内存的约 50%–70%、适度提升 max_connections);结合慢查询日志与 EXPLAIN 优化索引与 SQL;必要时进行连接池探活与超时参数调优。

四 高频配置与安全建议

  • 配置文件与路径:Ubuntu 主配置通常在 /etc/mysql/my.cnf,实际参数多位于 /etc/mysql/mysql.conf.d/mysqld.cnf;修改后执行 sudo systemctl restart mysql 生效;常用关键项包括 bind-address、port、datadir、socket
  • 时区与 SQL 模式:在 mysqld.cnf 设置 default-time_zone = ‘+8:00’ 并重启;按需调整 SQL 模式以平衡兼容性与严格性。
  • 包与依赖管理:安装或修复时使用 sudo apt-get -f install 自动补齐缺失依赖;离线安装 DEB 包后遇到依赖错误同样用该命令修复。
  • 安全加固:首次部署执行 sudo mysql_secure_installation,删除匿名用户、禁止 root 远程登录、限制本地 socket 访问等,降低攻击面。

0