Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么mysql客户端会得到;Can';t通过套接字连接到本地MySQL服务器'/var/mysql/mysql.sock'&引用;连接到远程服务器时?_Php_Mysql_Bash_Shell_Cron - Fatal编程技术网

Php 为什么mysql客户端会得到;Can';t通过套接字连接到本地MySQL服务器'/var/mysql/mysql.sock'&引用;连接到远程服务器时?

Php 为什么mysql客户端会得到;Can';t通过套接字连接到本地MySQL服务器'/var/mysql/mysql.sock'&引用;连接到远程服务器时?,php,mysql,bash,shell,cron,Php,Mysql,Bash,Shell,Cron,我有两个系统,一个web服务器和一个mysql服务器。web服务器出现问题,其mysql客户端无法使用由cron作业触发的shell脚本连接远程mysql服务器。cron作业使用root用户,我可以以root用户身份登录并在命令行上运行脚本,没有问题 shell脚本optimizestatements.sh具有: #!/bin/bash mysql --login-path=remoteserver -se "OPTIMIZESTATEMENT"`; 使用mysql\u c

我有两个系统,一个web服务器和一个mysql服务器。web服务器出现问题,其mysql客户端无法使用由cron作业触发的shell脚本连接远程mysql服务器。cron作业使用root用户,我可以以root用户身份登录并在命令行上运行脚本,没有问题

shell脚本
optimizestatements.sh
具有:

#!/bin/bash
mysql --login-path=remoteserver -se "OPTIMIZESTATEMENT"`;
使用
mysql\u config\u editor
,我设置了一个加密的选项文件,以避免以明文形式发送登录密码。创建该选项文件时,我使用了远程服务器的直接IP地址

cron作业条目很简单:

HOME=/
TERM=dumb
0 1 * * * /usr/local/bin/optimizestatements.sh | ts '[\%Y-\%m-\%d \%H:\%M:\%S]' >> /var/log/cron_optimizedb 2>&1
在我之前搜索答案时,几乎所有人都说本地mysql没有在web服务器上运行,但它们不一定适用于我的情况,因为我没有连接到本地mysql服务来优化它,我正在尝试连接到远程mysql服务器

我不希望mysql在我的web服务器上运行。我只想使用已安装的mysql客户端

此外,正如我已经指出的,在命令行上以cron用户的身份运行命令没有任何问题,也没有本地套接字问题


在这个过程中我还有什么遗漏吗?为什么cron作业需要运行本地mysql守护进程,但在命令行上手动运行它却不需要?

cron用户root的
$HOME
中是否存在
.mylogin.cnf
?可能cron没有设置
$HOME
,因此
mysql
无法找到它。难道你不能使用系统来放置你的优化语句吗?是的,在正确的用户主目录中有一个.mylogin.cnf,但是现在你提到了它,在crontab中,我将home设置为/并且这可能会搞乱脚本的运行方式。我还将研究MySQL事件系统,我甚至没有想到要这么做。谢谢。在您的案例中,cron用户root的
$HOME
中是否存在
.mylogin.cnf
?可能cron没有设置
$HOME
,因此
mysql
无法找到它。难道你不能使用系统来放置你的优化语句吗?是的,在正确的用户主目录中有一个.mylogin.cnf,但是现在你提到了它,在crontab中,我将home设置为/并且这可能会搞乱脚本的运行方式。我还将研究MySQL事件系统,我甚至没有想到要这么做。非常感谢。