MySQL 连接不再起作用

7 mysql php

我有两个 MySQL 服务器在运行(127.0.0.1:3306 和 127.0.0.1:3307)。现在我收到这个奇怪的错误:mysql_connect(): Lost connection to MySQL server at 'reading initial communication packet'我可以连接localhost:3307,但没有任何表/数据库。我很确定/etc/my.cnf是对的:

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = root
password   = ***

[mysqld]
port       = 3306
socket   = /var/run/mysql/mysql.sock

[mysqld2]
port       = 3307
socket   = /var/run/mysql/mysql2.sock
Run Code Online (Sandbox Code Playgroud)

我现在能做什么?我怎样才能理智地重新启动 MySQL 服务器?

也许更重要的是:

如何确保所有表仍然存在?

Rol*_*DBA 4

我很快发现缺少一件事:每个 [mysqld] 都需要有自己的 datadir。两个 mysqld 组不能共享相同的 datadir。您需要在不同的文件夹中分配不同的数据目录,并确保在所有数据目录上运行“chown -R mysql:mysql(数据目录文件夹)”。

你的 /etc/my.cnf 应该看起来像这样:

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = root
password   = ***

[mysqld]
port       = 3306
datadir  = /var/lib/mysql1
socket   = /var/run/mysql/mysql.sock

[mysqld2]
port       = 3307
datadir  = /var/lib/mysql2
socket   = /var/run/mysql/mysql2.sock
Run Code Online (Sandbox Code Playgroud)

查看来自 Pythian Group 的链接,了解如何启动和停止各个数据库服务

从我的回答中,您应该看到/var/lib/mysql1、/var/lib/mysql2等中必须有完整的数据副本。