IONOS托管部署薪资系统后MySQL连接报No such file or directory错误
报错根本原因
你遇到的No such file or directory不是站点文件缺失,是PHP的mysqli扩展默认尝试通过Unix Socket连接数据库时,找不到对应Socket文件导致的。本地XAMPP环境web和MySQL部署在同一台机器,Socket路径配置匹配所以能正常运行,IONOS的数据库是独立的远程实例,连接逻辑和本地存在差异。
分步排查解决方法
- 显式指定端口强制走TCP连接
写主机地址时如果没有指定端口,mysqli遇到localhost会默认优先走Socket连接,哪怕你填的是远程主机地址也会触发该逻辑。调整连接代码,显式传入3306端口参数:<?php $host_name = 'db5005797255.hosting-data.io'; $database = 'dbs4868780'; $user_name = '你的IONOS数据库实际用户名'; $password = '你的IONOS数据库实际密码'; $db_port = 3306; $link = new mysqli($host_name, $user_name, $password, $database, $db_port); if ($link->connect_error) { die('<p>Failed to connect to MySQL: '. $link->connect_error .'</p>'); } else { echo '<p>Connection to MySQL server successfully established.</p>'; } ?> - 验证数据库权限和账号信息
登录IONOS后台的数据库管理页面,确认两点:1. 你使用的数据库账号已经绑定了当前web服务器的访问IP,没有被限制仅本地访问;2. 账号名、密码完全和后台给出的一致,注意大小写敏感。 - 修正mysqli默认Socket配置
如果加端口后还是报错,新建phpinfo.php文件写入以下代码上传到站点根目录:
访问该文件搜索<?php phpinfo(); ?>mysqli.default_socket配置项,如果值指向的路径不存在,可在连接代码前手动设置正确的Socket路径,IONOS环境默认Socket路径一般为/tmp/mysql.sock:<?php ini_set('mysqli.default_socket', '/tmp/mysql.sock'); // 后续写数据库连接逻辑 ?> - 交叉验证连接方式
可以改用PDO方式连接数据库,排除mysqli扩展本身的配置问题,PDO也是PHP官方更推荐的数据库操作方案:<?php try { $pdo = new PDO('mysql:host=db5005797255.hosting-data.io;dbname=dbs4868780;port=3306;charset=utf8mb4', '你的数据库用户名', '你的数据库密码'); echo "数据库连接成功"; } catch(PDOException $e) { echo "连接错误: " . $e->getMessage(); } ?> - 确认端口连通性
以上步骤都无效的情况下,可联系IONOS技术支持确认你的web服务器到数据库主机db5005797255.hosting-data.io的3306出站端口没有被防火墙拦截。
内容的提问来源于stack exchange,提问作者user2965100
相关产品推荐
相关产品推荐

