Ubuntu MariaDB网络配置与优化
导读:Ubuntu MariaDB网络配置与优化 一 基础网络配置 修改 MariaDB 监听地址 编辑配置文件:/etc/mysql/mariadb.conf.d/50-server.cnf,在 [mysqld] 段将 bind-addres...
Ubuntu MariaDB网络配置与优化
一 基础网络配置
- 修改 MariaDB 监听地址
编辑配置文件:/etc/mysql/mariadb.conf.d/50-server.cnf,在 [mysqld] 段将 bind-address 设为 0.0.0.0(监听所有 IPv4)或指定内网地址;如需仅本地使用可保留 127.0.0.1。同时确保未启用 skip-networking(该选项会禁用 TCP 网络)。修改后重启服务:sudo systemctl restart mariadb。完成后可用 ss -tulnp | grep 3306 或 netstat -an | grep 3306 检查监听是否生效。 - 防火墙放行
使用 ufw:sudo ufw allow 3306/tcp 并 sudo ufw reload;如使用 firewalld:sudo firewall-cmd --permanent --add-service=mysql & & sudo firewall-cmd --reload。 - 创建远程访问账户与授权
登录数据库:sudo mysql -u root -p,创建用户并授权(示例:用户 remote_user、密码 your_password、允许来自任意主机 %):
CREATE USER ‘remote_user’@‘%’ IDENTIFIED BY ‘your_password’;
GRANT ALL PRIVILEGES ON . TO ‘remote_user’@‘%’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
如需仅允许内网网段,可将 ‘%’ 替换为如 ‘192.168.1.%’。 - 连接测试
从客户端测试:mysql -h < 服务器IP> -u remote_user -p。若仍失败,复核监听地址、防火墙与账户主机限制。
二 安全与访问控制
- 运行安全初始化:sudo mysql_secure_installation,按提示设置 root 密码、移除匿名用户、禁止 root 远程登录、删除 test 数据库等。
- 最小权限原则:避免使用 ‘root’@‘%’ 远程登录,按业务创建专用账户并限制来源网段与库表权限。
- 网络最小化暴露:仅在内网开放 3306/TCP,必要时通过跳板机或 SSH 隧道访问;云环境建议配合 安全组仅放通可信来源。
三 网络与连接性能优化
- 连接与会话
- 合理设置 max_connections(避免过大导致线程争用与内存膨胀),并结合应用连接池(如 HikariCP、连接复用)控制实际并发。
- 适度提高 thread_cache_size,减少线程创建/销毁开销。
- 超时与缓冲
- 调整 wait_timeout 与 interactive_timeout,避免空闲连接长期占用。
- 根据业务负载调整 max_allowed_packet,避免大包被截断或报错。
- 日志与诊断
- 启用 slow_query_log 与 long_query_time,配合 EXPLAIN 与 SHOW PROCESSLIST 定位慢查询与阻塞会话。
- 存储与引擎
- 使用 InnoDB 并优先配置 innodb_buffer_pool_size(建议为可用内存的约 50%–70%,视负载与实例共存情况微调)。
- 适度增大 innodb_log_file_size 提升写吞吐;在允许一定持久性权衡的场景下,可将 innodb_flush_log_at_trx_commit=2 提升性能。
- 监控与容量
- 使用 mysqladmin status、SHOW STATUS、SHOW PROCESSLIST 与系统工具(如 top/htop、iostat、ss)持续观察连接数、线程、I/O 与查询延迟,结合容量规划逐步调优。
四 快速排障清单
- 服务与监听:确认 sudo systemctl status mariadb 为 active;用 ss -tulnp | grep 3306 检查是否在 0.0.0.0:3306 监听。
- 防火墙/安全组:核对 ufw/firewalld 或云安全组已放行 3306/TCP,来源网段正确。
- 账户权限:确认存在允许远程的来源主机(如 ‘user’@‘%’ 或 ‘user’@‘192.168.1.%’),并已 FLUSH PRIVILEGES。
- 端口连通性:从客户端执行 mysql -h -u -p;必要时在服务器侧抓包或临时关闭防火墙验证。
- 错误码速查:ERROR 1130 (HY000) 多为来源主机未被授权;ERROR 2003 多为端口不通或监听地址不当。
五 推荐的配置片段与核对项
- 配置片段(/etc/mysql/mariadb.conf.d/50-server.cnf 的 [mysqld] 段,按需调整)
- bind-address = 0.0.0.0
- port = 3306
- skip-networking = 0
- max_connections = 200
- thread_cache_size = 50
- wait_timeout = 300
- interactive_timeout = 300
- slow_query_log = 1
- slow_query_log_file = /var/log/mysql/mariadb-slow.log
- long_query_time = 1
- innodb_buffer_pool_size = 4G(示例值,建议为内存的 50%–70%)
- innodb_log_file_size = 256M
- innodb_flush_log_at_trx_commit = 2
- max_allowed_packet = 64M
- 修改后执行:sudo systemctl restart mariadb 并用 ss -tulnp | grep 3306 复核监听。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MariaDB网络配置与优化
本文地址: https://pptw.com/jishu/777926.html
