mysql - 开始使用预编译的mysql,但是得到: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

标签 mysql linux sockets

我知道我问的问题和其他人有些相似,但我的情况有点不同: 我没有用yum安装mysql-server,也没有用rpm或者compile-makeinstall安装。 我只是从官网下载了压缩的预编译二进制文件: http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz

所以,没有/etc/init.d/mysqld,“service mysqld start/stop/restart”无法工作。

我取消存档并初始化数据库:

./scripts/mysql_install_db

然后开始:

./bin/mysqld_safe &

到目前为止一切正常,但是当我尝试使用 mysql 连接它时,它提示:

# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

数据目录更改为:

drw-rw-rw-  4 mysql   mysql   4096 Jan  3 14:03 mysql

以下停止命令也无法工作:

# mysqladmin shutdown
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

mysqld_safe 进程和 mysqld 进程都工作正常:

# ps -ef | grep mysqld
root     10977  5685  0 14:03 pts/2    00:00:00 /bin/sh ./bin/mysqld_safe
mysql    11154 10977  0 14:03 pts/2    00:00:00 /root/mysql-5.1.73-linux-x86_64-glibc23/bin/mysqld 
--basedir=/root/mysql-5.1.73-linux-x86_64-glibc23 
--datadir=/var/lib/mysql --user=mysql 
--log-error=/var/log/mysqld.log 
--pid-file=/var/run/mysqld/mysqld.pid 
--socket=/var/lib/mysql/mysql.sock
root     11650  5685  0 14:26 pts/2    00:00:00 grep mysqld

/etc/my.cnf 中的一些配置信息是:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1

最佳答案

# ps -ef | grep mysqld
root     10977  5685  0 14:03 pts/2    00:00:00 /bin/sh ./bin/mysqld_safe
mysql    11154 10977  0 14:03 pts/2    00:00:00 /root/mysql-5.1.73-linux-x86_64-glibc23/bin/mysqld 
--basedir=/root/mysql-5.1.73-linux-x86_64-glibc23 
--datadir=/var/lib/mysql --user=mysql 
--log-error=/var/log/mysqld.log 
--pid-file=/var/run/mysqld/mysqld.pid 
--socket=/var/lib/mysql/mysql.sock

你的套接字在/var/lib/mysql/mysql.sock 猜你正在使用 /usr/bin/mysql

要连接mysql,可以更新/etc/my.cnf,为设置socket=/var/lib/mysql/mysql.sock[ mysql] 部分

[mysql]
socket=/var/lib/mysql/mysql.sock

要修复 mysqladmin,您还需要添加 [mysqladmin] 部分

[mysqladmin]
socket=/var/lib/mysql/mysql.sock

或者您可以添加[client],它应该适用于mysqlmysqladmin

[client]
socket=/var/lib/mysql/mysql.sock

关于mysql - 开始使用预编译的mysql,但是得到: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20897812/

相关文章:

c - sync() 是如何工作的?

sockets - tcp 连接、socket 连接和http 连接有什么不同?

php - 来自数组的 PDO bindParam 变量数据类型

mysql - 使用 golang 将数组中的行批量插入到 SQL Server

mysql - PHPStorm Mysql数据源:权限被拒绝:connect

python-3.x - 如何在 Python 中修复 '[Errno 98] Address already in use'

C# SSL 安全套接字

MySQL 分组依据和 COUNT

linux - 提取分区数的最佳方法?

linux - 在 Go 中设置进程名称(如 `ps` 所示)