我在共享服务器上有一个帐户。我有 jailshell 访问权限以及 PhpMyAdmin。
我想通过 SSH 运行 mysql 命令但出现错误:
$ mysql -u mySqlUser -p mySqlPw 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器
我可以连接 PHP 和 phpMyAdmin,因此是否可以从 shell 调用 mysql 并让其通过 ip 和端口而不是套接字进行连接?该文件/var/lib/mysql/mysql.sock
不存在 - 也许这是故意的,唯一的问题/etc/my.cnf
是
[mysqld] 跳过innodb
更多信息
我没有权限更改系统设置。我在 /var 中搜索了 mysql.sock,但一无所获。但是,phpMyAdmin 可能以某种方式通过套接字进行连接:
确实,如果我可以通过 IP 连接就太好了。
还尝试了这两种语法:
$ mysql -u mySqlUser -p mySqlPw -h 本地主机 $ mysql -u mySqlUser -p mySqlPw -h 本地主机 -P 3306
两者的结果相同:
错误 2002 (HY000):无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)
答案1
您缺少协议参数:
mysql --protocol=tcp -u mySqlUser -p mySqlPw
或者
mysql -u mySqlUser -p mySqlPw -h localhost --protocol=tcp -P 3306
两者应该相同(localhosst:3306 是默认值)
答案2
从mysql(1)
手册页中:
· --host=host_name, -h host_name Connect to the MySQL server on the given host.
答案3
$ mysql -u...-p...-h 127.0.0.1
或者
$ mysql -u ... -p ... -h 主机名.example.com
我相信这会阻止使用套接字,使用 -h localhost 使用套接字。另一个选项是,在服务器上查找 mysql.sock 文件,然后...
$ mysql -u ... -p ... -S /path/to/mysql.sock