Ubuntu MariaDB常见问题及解答
导读: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
