一、定位MariaDB配置文件
Linux环境下,MariaDB的主配置文件路径因发行版和安装方式而异,常见位置包括:
/etc/mysql/mariadb.conf.d/(Ubuntu/Debian)或/etc/my.cnf.d/(CentOS/RHEL)目录下的.cnf文件,避免直接修改my.cnf导致配置冲突。二、备份原始配置文件
修改配置文件前,务必备份原始文件以防止配置错误导致服务异常:
sudo cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf.bak # Ubuntu/Debian
sudo cp /etc/my.cnf /etc/my.cnf.bak # CentOS/RHEL或其他
三、常用配置项定制说明
配置文件采用“[section]”分段结构,核心配置集中在[mysqld](服务端)和[client](客户端)段。以下是关键配置项的定制指南:
bind-address = 127.0.0.1(仅本地访问)。若需允许远程连接,修改为0.0.0.0(所有IP)或特定IP(如192.168.1.100):[mysqld]
bind-address = 0.0.0.0
3306,可根据需求修改(如3307),需同步调整防火墙规则:[mysqld]
port = 3306
utf8mb4(支持完整的Unicode,包括emoji),避免乱码问题:[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
innodb_buffer_pool_size是InnoDB引擎的核心性能参数,建议设置为服务器物理内存的50%-80%(如8GB内存设置为4G-6G),用于缓存数据和索引,显著提升查询速度:[mysqld]
innodb_buffer_pool_size = 4G
max_connections控制并发连接数,默认100。根据应用负载调整(如小型网站200,大型应用500-1000),避免过多连接导致内存耗尽:[mysqld]
max_connections = 500
tmp_table_size和max_heap_table_size控制临时表的最大大小(默认16M-32M)。若应用频繁使用临时表(如复杂查询),可适当增大(如256M),避免临时表溢出到磁盘:[mysqld]
tmp_table_size = 256M
max_heap_table_size = 256M
query_cache_size用于缓存SELECT查询结果(默认16M)。若应用写操作频繁(如电商系统),建议关闭(query_cache_type = 0);若读操作远多于写操作,可开启(query_cache_type = 1,query_cache_size = 64M):[mysqld]
query_cache_type = 0 # 关闭查询缓存(适用于写密集型场景)
# query_cache_type = 1 # 开启查询缓存(适用于读密集型场景)
# query_cache_size = 64M
-- 登录MariaDB后执行
CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'appuser'@'%';
REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';
FLUSH PRIVILEGES;
skip_name_resolve设置为1,避免MariaDB将IP地址解析为主机名(减少DNS查询延迟,提升连接速度):[mysqld]
skip_name_resolve = 1
log_error指定错误日志路径(默认/var/log/mysql/error.log),用于排查数据库问题:[mysqld]
log_error = /var/log/mariadb/mariadb.err
log-bin开启二进制日志(默认关闭),用于数据恢复和主从复制。需设置server-id(唯一标识服务器,如1):[mysqld]
log-bin = mysql-bin
server-id = 1
expire_logs_days = 7 # 保留7天日志(自动清理旧日志)
四、保存并重启服务
修改配置文件后,需重启MariaDB服务使配置生效:
sudo systemctl restart mariadb # 大多数Linux发行版
sudo systemctl restart mysql # 部分旧版本或衍生发行版
五、验证配置有效性
SHOW VARIABLES LIKE '配置项';(如SHOW VARIABLES LIKE 'character_set_server';),确认配置值已生效。mysql -h 服务器IP -u appuser -p,验证是否能正常连接。/var/log/mariadb/mariadb.err)定位问题(如端口冲突、配置语法错误)。注意事项
SHOW STATUS命令监控数据库状态(如SHOW STATUS LIKE 'Threads_connected';),逐步优化参数。3306)的访问范围(如仅允许应用服务器IP访问),提升安全性。/etc/mysql/mariadb.conf.d/50-server.cnf),避免配置丢失。