当MySQL的4个默认数据库被意外删除时,可以通过以下步骤进行恢复。这四个默认数据库是mysqlinformation_schemaperformance_schemasys

  1. 检查数据备份:首先,我们需要检查是否存在之前的数据库备份。如果有备份,可以使用备份文件来恢复数据库。如果没有备份,则需要考虑其他解决方案。

  2. 停止MySQL服务器:在进行数据库恢复之前,我们需要停止MySQL服务器以防止进一步的数据修改。可以使用以下命令停止MySQL服务器:

sudo service mysql stop
  1. 找到MySQL数据目录:默认情况下,MySQL的数据目录位于/var/lib/mysql。可以使用以下命令定位数据目录:
mysql --help | grep datadir

在输出中,可以找到数据目录的位置。

  1. 创建临时目录:为了安全起见,我们可以创建一个临时目录并将数据目录复制到该目录中,以便在恢复过程中进行实验。可以使用以下命令创建临时目录:
mkdir /tmp/mysql_backup
cp -R /var/lib/mysql/* /tmp/mysql_backup/
  1. 启动MySQL服务器并进入恢复模式:使用以下命令启动MySQL服务器并进入恢复模式:
sudo mysqld_safe --skip-grant-tables &

这将启动MySQL服务器,但跳过身份验证和授权检查。这样,我们就可以在不需要密码的情况下访问数据库。

  1. 连接到MySQL服务器:使用以下命令连接到MySQL服务器:
mysql

此时,您应该已经连接到MySQL服务器,可以使用mysql命令行工具执行SQL语句。

  1. 创建默认数据库:可以使用以下SQL语句创建默认数据库:
CREATE DATABASE mysql;
CREATE DATABASE information_schema;
CREATE DATABASE performance_schema;
CREATE DATABASE sys;

这将重新创建默认数据库。

  1. 退出MySQL服务器并停止MySQL服务:使用以下命令退出MySQL服务器,并停止MySQL服务:
EXIT;
sudo service mysql stop
  1. 恢复数据目录:将之前创建的临时目录复制回原始数据目录:
cp -R /tmp/mysql_backup/* /var/lib/mysql/
  1. 启动MySQL服务器:使用以下命令启动MySQL服务器:
sudo service mysql start
  1. 验证恢复:使用以下命令连接到MySQL服务器,并检查默认数据库是否已恢复:
mysql
SHOW DATABASES;

您应该能够看到默认数据库已恢复并列在结果中。

在整个恢复过程中,我们做了以下操作:

  • 停止MySQL服务器以防止数据修改。
  • 创建一个临时目录以备份数据目录。
  • 启动MySQL服务器并进入恢复模式,跳过身份验证和授权检查。
  • 连接到MySQL服务器并使用SQL语句重新创建默认数据库。
  • 退出MySQL服务器并停止MySQL服务。
  • 将之前创建的临时目录复制回原始数据目录。
  • 启动MySQL服务器并验证恢复。

下面是恢复过程的序列图表示:

sequenceDiagram
    participant User
    participant MySQL_Server
    participant File_System

    User->>MySQL_Server: Stop MySQL Server
    MySQL_Server->>+File_System: Create temporary directory
    MySQL_Server->>File_System: Copy data directory to temporary directory
    MySQL_Server->>MySQL_Server: Start MySQL Server in recovery mode
    User->>MySQL_Server: Connect to MySQL Server
    User->>MySQL_Server: Create default databases
    User->>MySQL_Server: Exit MySQL Server
    MySQL_Server->>MySQL_Server: Stop MySQL Server
    MySQL_Server->>+File_System: Restore data directory from temporary directory
    MySQL_Server->>MySQL_Server: Start MySQL Server
    User->>MySQL_Server: Connect to MySQL Server
    User->>MySQL_Server: Verify recovery

通过按照上述步骤进行操作,我们可以成功恢复MySQL的4个默认数据库。请确保在执行任何数据库操作之前进行适当的备份,并在实施恢复过程之前仔细检查和验证备份文件的完整性。