首页主机资讯Ubuntu MariaDB常见问题及解答

Ubuntu MariaDB常见问题及解答

时间2025-11-27 15:07:03发布访客分类主机资讯浏览375
导读:Ubuntu 上 MariaDB 常见问题与排查 一 安装与基础配置 安装与启动 更新索引并安装:sudo apt update && sudo apt install mariadb-server -y 启动与开机自启...

Ubuntu 上 MariaDB 常见问题与排查

一 安装与基础配置

  • 安装与启动
    • 更新索引并安装:sudo apt update & & sudo apt install mariadb-server -y
    • 启动与开机自启:sudo systemctl start mariadb & & sudo systemctl enable mariadb
    • 验证版本:mariadb --version
  • 首次安全加固
    • 运行安全脚本:sudo mysql_secure_installation,按提示设置 root 密码、移除匿名用户、禁止 root 远程登录、删除 test 库并刷新权限
  • 配置文件路径
    • Ubuntu 22.04/20.04 常见路径:/etc/mysql/mariadb.conf.d/50-server.cnf
    • 部分版本或自定义安装可能在:/etc/mysql/my.cnf
  • 远程访问基础
    • 配置监听:在 [mysqld] 中设置 bind-address = 0.0.0.0(或注释掉该行);端口 3306
    • 防火墙放行:sudo ufw allow 3306/tcp & & sudo ufw reload
    • 创建远程用户并授权:
      • CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      • CREATE USER ‘myuser’@‘%’ IDENTIFIED BY ‘StrongPassword123!’;
      • GRANT ALL PRIVILEGES ON mydb.* TO ‘myuser’@‘%’;
      • FLUSH PRIVILEGES;

二 登录认证与权限

  • 免 sudo 才能登录或提示需要密码
    • 现象:直接执行 mysql -u root -p 失败,但 sudo mysql -u root 可进入
    • 原因:root 使用 unix_socket 插件进行本地认证
    • 处理(任选其一):
      • 保持 unix_socket:仅本地管理,远程管理请创建专用账户
      • 切换为密码认证:
        • 进入 MariaDB:mysql -u root -p(或使用安全模式)
        • 执行:ALTER USER ‘root’@‘localhost’ IDENTIFIED VIA mysql_native_password USING PASSWORD(‘YourStrongP@ssw0rd’);
        • FLUSH PRIVILEGES;
  • 忘记 root 密码
    • 停止服务:sudo systemctl stop mariadb
    • 安全模式启动:sudo mysqld_safe --skip-grant-tables &
    • 登录并修改:mysql -u root,执行
      • FLUSH PRIVILEGES;
      • ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘NewStrongPassword!’;
      • exit
    • 重启:sudo systemctl restart mariadb
  • 远程连接被拒绝
    • 核对项:
      • 配置文件中 bind-address 是否为 0.0.0.0
      • 用户主机是否为 ‘%’ 或指定网段(如 ‘192.168.1.%’
      • 防火墙是否放行 3306/tcp
      • 云服务器安全组是否允许入站 3306
  • 插件相关报错
    • 如遇到 “Plugin ‘unix_socket’ is not loaded” 或认证插件异常,可在安全模式将 root 的 plugin 调整为 mysql_native_password,或重新安装插件后再调整认证方式

三 远程连接与网络

  • 无法从外部连接
    • 服务端配置:编辑 /etc/mysql/mariadb.conf.d/50-server.cnf(或 /etc/mysql/my.cnf),在 [mysqld] 下设置 bind-address = 0.0.0.0
    • 权限与账户:确保存在如 ‘myuser’@‘%’ 的授权记录
    • 系统防火墙:sudo ufw allow 3306/tcp & & sudo ufw reload
    • 云环境:在云平台安全组放行 TCP 3306
  • 端口与监听确认
    • 查看监听:sudo ss -lntp | grep 3306
    • 日志排查:sudo tail -n50 /var/log/mysql/error.log
  • 仅内网访问建议
    • bind-address 设为内网地址(如 192.168.1.10),并通过防火墙或安全组限制来源 IP

四 性能与日常运维

  • 关键配置建议(示例)
    • 字符集与排序规则:
      • character-set-server utf8mb4
      • collation-server utf8mb4_unicode_ci
    • InnoDB:
      • innodb_file_per_table 1
      • innodb_buffer_pool_size:建议为物理内存的 50%–70%(示例:2G
    • 连接与会话:
      • max_connections 500
    • 主从复制:
      • log-bin /var/log/mysql/mariadb-bin
      • server-id 1
  • 备份与恢复
    • 备份:mysqldump -u root -p mydb > mydb_backup.sql
    • 恢复:mysql -u root -p mydb < mydb_backup.sql
  • 常用运维命令
    • 启停与状态:sudo systemctl start|stop|status mariadb
    • 在线修改配置后重启:sudo systemctl restart mariadb
    • 版本查看:mariadb --version
  • 监控与日志
    • 错误日志:/var/log/mysql/error.log
    • 定期升级:sudo apt update & & sudo apt upgrade mariadb-server

五 卸载与彻底清理

  • 保留数据重装
    • 卸载软件包:sudo apt-get remove --purge mariadb-server mariadb-client mariadb-common -y
    • 清理依赖:sudo apt-get autoremove -y & & sudo apt-get autoclean
  • 完全清理(含数据与配置,谨慎)
    • 停止服务:sudo systemctl stop mariadb
    • 删除数据与配置:sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql
    • 删除系统用户/组:sudo deluser mysql & & sudo delgroup mysql
    • 重新安装:sudo apt-get install mariadb-server -y
  • 重装后首次安全设置
    • 运行:sudo mysql_secure_installation,设置强密码并加固安全项

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


若转载请注明出处: Ubuntu MariaDB常见问题及解答
本文地址: https://pptw.com/jishu/757929.html
Kubernetes集群Ubuntu节点故障怎么办 Ubuntu MariaDB权限管理详解

游客 回复需填写必要信息