我正在尝试运行一些我们在公司使用的PHP脚本来进行一些数据分析。这些脚本执行需要root访问权限的操作,因此我别无选择,只能使用sudo
运行它们。
我已经缩小了我必须以root用户身份连接到数据库的问题。我有以下超级剥离代码只是为了显示问题:
<?php
// mydatabasename, myUsername, myPassword are replaced with the real names, everything else is the same
$pdo = new PDO('mysql:host=localhost;dbname=mydatabasename', 'myUsername', 'myPassword', array(PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
var_dump($pdo);
?>
当我在没有sudo
的情况下运行此脚本时,它运行正常。当我使用sudo
运行它时,出现以下错误:
Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' in /opt/.../something.php:5
我不确定这里发生了什么,我没有PHP或MySQL的超级高级知识。我们的服务器上不存在文件/var/run/mysqld/mysqld.sock
。我不确定为什么root会尝试访问它,但我的用户不会。