MariaDB 10.6通过Socket连接失败:Access Denied问题求助
MariaDB Socket连接权限拒绝问题排查与解决
一、先修复mariadb.socket启动失败问题
从状态输出可知,mariadb.socket启动失败是因为mariadb.service已在运行,socket激活机制被拒绝。执行以下命令修复:
sudo systemctl stop mariadb.service sudo systemctl restart mariadb.socket sudo systemctl start mariadb.service
或者直接让systemd通过socket激活管理服务:
sudo systemctl stop mariadb.service sudo systemctl enable --now mariadb.socket
二、排查unix_socket认证失败问题
1. 确认用户认证配置
登录MariaDB(用root或有权限的账号),执行SQL检查用户的认证插件:
SELECT user, host, plugin FROM mysql.user WHERE user = 'xuserbackup';
确保plugin字段返回unix_socket。如果不是,重新执行创建命令并刷新权限:
GRANT ALL PRIVILEGES ON *.* TO `xuserbackup`@`localhost` IDENTIFIED VIA unix_socket WITH GRANT OPTION; FLUSH PRIVILEGES;
2. 检查套接字文件权限
查看/run/mysqld/mysqld.sock的权限和归属:
ls -l /run/mysqld/mysqld.sock
正常应归属mysql:mysql,权限至少允许目标用户访问。如果权限异常,执行:
sudo chown mysql:mysql /run/mysqld/mysqld.sock sudo chmod 777 /run/mysqld/mysqld.sock
注:生产环境可将xuserbackup加入mysql组,再把套接字权限设为srwxrwxr-x,更安全。
3. 匹配系统用户与数据库用户
unix_socket认证要求执行mysql命令的系统用户与数据库用户名一致,或该系统用户被授权。因此需切换到xuserbackup系统用户执行连接命令:
sudo -u xuserbackup mysql --protocol=socket -S /run/mysqld/mysqld.sock
三、验证连接
完成上述操作后,重新执行连接命令,确认是否能成功登录。
内容的提问来源于stack exchange,提问作者Mortred
相关产品推荐
相关产品推荐

