Slurmctld启动失败,MariaDB连接权限错误求助
Slurm slurmctld启动失败:MariaDB连接权限问题
问题现象
执行systemctl status slurmctld得到以下失败输出:
root@MyCluster:/opt/WorkLoadManager/slurm/23.11.5# systemctl status slurmctld × slurmctld.service - Slurm controller daemon Loaded: loaded (/etc/systemd/system/slurmctld.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2024-04-09 16:18:33 CEST; 4s ago Process: 2592430 ExecStart=/opt/WorkLoadManager/slurm/23.11.5/sbin/slurmctld --systemd $SLURMCTLD_OPTIONS (code=exited, status=1/FAILURE) Main PID: 2592430 (code=exited, status=1/FAILURE) CPU: 44ms Apr 09 16:18:32 MyCluster.num.lab slurmctld[2592430]: slurmctld: Job accounting information stored, but details not gathered Apr 09 16:18:32 MyCluster.num.lab slurmctld[2592430]: slurmctld: slurmctld version 23.11.5 started on cluster MyCluster Apr 09 16:18:32 MyCluster.num.lab systemd[1]: Started Slurm controller daemon. Apr 09 16:18:32 MyCluster.num.lab slurmctld[2592430]: slurmctld: accounting_storage/slurmdbd: clusteracct_storage_p_register_ctld: Registering slurmctld at port 6817 with slurmdbd Apr 09 16:18:33 MyCluster.num.lab slurmctld[2592430]: slurmctld: priority/multifactor: _read_last_decay_ran: No last decay (/var/spool/slurmctld/priority_last_decay_ran) to recov> Apr 09 16:18:33 MyCluster.num.lab slurmctld[2592430]: slurmctld: No memory enforcing mechanism configured. Apr 09 16:18:33 MyCluster.num.lab slurmctld[2592430]: slurmctld: error: mysql_real_connect failed: 1045 Access denied for user 'root'@'localhost' (using password: NO) Apr 09 16:18:33 MyCluster.num.lab slurmctld[2592430]: slurmctld: fatal: You haven't inited this storage yet. Apr 09 16:18:33 MyCluster.num.lab systemd[1]: slurmctld.service: Main process exited, code=exited, status=1/FAILURE Apr 09 16:18:33 MyCluster.num.lab systemd[1]: slurmctld.service: Failed with result 'exit-code'.
环境信息
- Slurm版本:23.11.5
- 数据库:mariadb Ver 15.1 Distrib 10.6.16-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
已尝试操作
为解决初始的1045无密码访问错误,执行了以下MariaDB操作:
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWD'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> USE mysql; MariaDB [mysql]> SELECT User, Host, plugin FROM mysql.user; +-------------+-----------+-----------------------+ | User | Host | plugin | +-------------+-----------+-----------------------+ | mariadb.sys | localhost | mysql_native_password | | root | localhost | mysql_native_password | | mysql | localhost | mysql_native_password | | slurm | localhost | mysql_native_password | | slurm | system0 | mysql_native_password | +-------------+-----------+-----------------------+ quit
重启MariaDB后,出现新错误:
slurmctld: error: mysql_real_connect failed: 1698 Access denied for user 'root'@'localhost'
解决方案
1. 改用专用slurm数据库用户
Slurm账户数据库不应使用root用户连接,安全且容易引发权限冲突,应使用已存在的slurm用户。先为该用户设置密码:
ALTER USER 'slurm'@'localhost' IDENTIFIED BY 'your_slurm_db_password'; FLUSH PRIVILEGES;
2. 修正slurmdbd.conf配置
编辑Slurm数据库守护进程配置文件(通常路径为/etc/slurm/slurmdbd.conf),确保数据库连接参数指向slurm用户:
StorageType=accounting_storage/mysql StorageHost=localhost StorageUser=slurm StoragePass=your_slurm_db_password StorageLoc=slurm_acct_db
3. 初始化Slurm账户数据库
如果尚未初始化数据库,执行以下命令完成初始化:
slurmdbd -D -v # 看到"Database initialized"提示后,按Ctrl+C停止进程
4. 修复文件权限
确保Slurm相关目录和文件归slurm用户所有:
chown -R slurm:slurm /var/spool/slurmctld /var/spool/slurmdbd /etc/slurm
5. 重启服务验证
依次重启相关服务并检查状态:
systemctl restart mariadb systemctl restart slurmdbd systemctl restart slurmctld # 验证启动状态 systemctl status slurmctld
内容的提问来源于stack exchange,提问作者ZushiWuxian
相关产品推荐
相关产品推荐

