Ubuntu下MariaDB 11.4启动未读取配置文件问题求助
检查systemd服务的启动参数
Ubuntu下MariaDB的systemd服务可能强制指定配置文件路径或直接覆盖datadir。执行以下命令查看服务实际启动命令:ps aux | grep mariadbd如果输出包含
--defaults-file=/path/to/other/config,说明服务加载的不是你修改的50-server.cnf;如果直接有--datadir=/var/lib/mysql,则说明启动参数覆盖了配置文件设置。也可以查看systemd服务文件内容:
cat /lib/systemd/system/mariadb.service或检查自定义服务配置片段:
ls -l /etc/systemd/system/mariadb.service.d/ cat /etc/systemd/system/mariadb.service.d/*.conf若发现服务文件的
ExecStart参数指定了--defaults-file或--datadir,修改对应配置后重新加载systemd:sudo systemctl daemon-reload sudo systemctl restart mariadb验证配置文件组名是否正确
MariaDB 10.5及以后版本,服务器端配置组为[mariadbd],而非旧版的[mysqld]。打开/etc/mysql/mariadb.conf.d/50-server.cnf,确认修改的datadir在[mariadbd]组内,组名错误会导致服务启动时忽略配置项。手动指定配置文件启动服务器
跳过systemd,直接用命令行指定配置文件启动,验证配置是否生效:sudo mariadbd --defaults-file=/etc/mysql/mariadb.conf.d/50-server.cnf若此时出现语法错误提示或datadir生效,说明问题出在systemd服务配置;若仍不生效,检查配置文件权限(确保
mariadb用户可读取):ls -l /etc/mysql/mariadb.conf.d/50-server.cnf权限应为
-rw-r--r--,属主属组建议为root:root或root:mysql。检查全局配置文件的优先级
mariadbd --verbose --help输出的配置文件读取顺序中,/etc/my.cnf排在/etc/mysql/my.cnf之前。若/etc/my.cnf存在且定义了datadir,会覆盖后续配置文件设置,检查该文件:cat /etc/my.cnf若包含
datadir=/var/lib/mysql,可删除该行或修改为目标路径。
内容的提问来源于stack exchange,提问作者Mike

