我有一个大问题试图连接到mysql。当我跑步时:

/usr/local/mysql/bin/mysql start

我有以下错误:

Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)

我有mysql。Sock在/var/mysql目录下。

在/etc/my.cnf中,我有:

[client]
port=3306
socket=/var/mysql/mysql.sock

[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

在/etc/php.ini中有:

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock

我已经使用sudo /opt/local/apache2/bin/apachectl restart重启apache

但还是有误差。

否则,我不知道这是否相关,但当我执行mysql_config——sockets时,我得到

--socket         [/tmp/mysql.sock]

当前回答

我使用127.0.0.1为-h代替localhost,一切正常。在其他情况下有什么-错误上面。

其他回答

你确定你安装了MySQL和MySQL服务器吗?

例如,要安装MySQL服务器,我将使用yum或apt安装MySQL命令行工具和服务器:

yum -y install mysql mysql-server (or apt-get install mysql mysql-server)

启动MySQL服务:

/sbin/chkconfig mysqld on

启动MySQL服务器:

/sbin/service mysqld start

然后设置MySQL root密码:

mysqladmin -u root password 'new-password' (with the quotes)

这并没有直接回答你的问题,而是它的一个子集,即使用PythonAnywhere。在寻找解决方案时,我一直在无意中遇到这个问题,所以我在这里添加了它,希望它能帮助其他处于我这种情况的人。


PythonAnywhere决定更改数据库连接主机名,以提高效率和可靠性,详情如下:

用于连接您的帐户的正式主机名 MySQL数据库实例由MySQL更改。服务器 yourusername.mysql.pythonanywhere-services.com。这绕过了我们的基础设施的一部分,最近开始出现问题 几周,它应该比旧的更有效和可靠 道路

因此,您需要将主机名更新为上面突出显示的值。

如果你正在重新安装mariadb,你必须检查mysql的旧进程是否还在运行,找到并杀死这个进程

ps ax | grep mysql

sudo kill -9 mysql

因为InnoDB会自动重启,你可以使用kill -15 如需重新安装*删除目录

sudo rm -rf /var/lib/mysql

创建一个默认的数据库结构并引导mariadb读取数据目录

sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

然后重新配置

sudo mysql_secure_installation

添加

--protocol=tcp 

跟你联系的那些偷车贼都对我有用。

就我而言,我使用的是Centos 5.5。我发现这个问题是因为mysql服务以某种方式停止了。 所以我启动mysql服务的命令:

 /etc/init.d/mysqld start

所以. .愚蠢的错误。