日期:2013-05-22  浏览次数:20459 次

三、停止服务器

    要手工启动服务器,使用MySQLadmin:

    %mysqladmin shutdown

    要自动停止服务器,你不需做特别的事情。BSD系统普通通过向进程发一个TERM信号停止服务,它们或者正确应对它或被粗鲁地杀死。mysqld在它收到这个信号时以终止作为应对。对于用mysql.server启动服务器的System V风格的系统,停止进程将用一个stop参数调用该脚本,通知服务器终止,当然假定你已安装了mysql.server。

    四、如果你不能连接服务器,如何重新获得对服务器的控制

    在某些情况下,你可能由于不能连接它而手工重启服务器。当然,这有点矛盾。由于普通你通过连接服务器而手工关掉它,那么这种情况如何会出现。

    首先,MySQL root口令可以曾经设置为你不知道的值,这可能发生在你修正口令时,例如,如果你在输入新口令时偶然键入一个不可见的控制字符。你也可能忘记口令。

    其次,连接localhost通常通过一个Unix域套接字文件进行,普通是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运转一个cron任务删除了/tmp下的临时文件。

    如果你由于丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。由于服务器在启动时重新创建它。这里的骗局是你不能用套接字建立连接由于它不见了,你必须建立一个TCP/IP连接,例如,如果服务器主机是pit.snake.net,你可以这样连接:

    %mysqladmin -p -u root -h pit.snake.net shutdown

    如果套接字文件被一个cron任务删除,问题将反复出现,除非你修正cron任务或使用一个或使用一个不同的套接字文件,你可以使用全局选项文件指定一个不同的套接字,例如,如果数据目录是/usr/local/var,你可以通过将下列行加入/etc/my.cnf中,将套接字文件移到那里:

    [mysqld]
    socket=/usr/local/var/mysql.sock

    [client]
    socket=/usr/local/var/mysql.sock
    对服务器和客户均指定路径名,使得它们都使用同一个套接字文件。如果你只为服务器设置路径,客户程序将仍然期望在原位置执行套接字,在修正后重启服务器,使它在新位置创建套接字。

    如果你由于忘记root口令或曾经将它设置为不同于认为的值而不能连接,你需求重新获得对服务器的控制,是你能再次设置口令:

   

中缀服务器

    如果你以root登录服务器主机,你可以用kill命令终止服务器。你可以使用ps命令或通过寻觅服务器的PID文件(通常在数据目录中)找出服务器进程的ID。

    最好是首先尝试用一个向服务器发出一个TERM信号的正常kill看它能否将以正常终止应对。这种方式下,表和日志将正确地被清空。如果服务器阻塞并且不应对一个正常终止信号,你可以用kill -9强制终止它。这是最后的手段了,由于这可能有未清空的修正,而且你冒着让表处于一个不分歧形状的风险。

    如果你用kill -9终止服务器,要确保在启动服务器前用myisamchk和isamchk检查你的表。 
    用--skip-grant-table选项重启服务器。
    这通知服务器不使用授权表验证连接,这允许你以root连接而无须口令。在你曾经连接后,改变root口令。 
    用mysqladmin flush-privileges通知服务器再次使用授权表启动
    如果你的mysqladmin版本不认识Flash-privileges,试一试reload。

    五、运转多个服务器

    大多数再一台给定的机器上运转单个MySQL服务器,但在很多情况下,运转多个服务器是很有用的:

    你可能想测试一个服务器的新版本,而保留你正在运转的生产服务器。在这种情况下,你会运转不同的服务器代码。 
    操作系统普通限制每个进程的打开文件句柄数量。如果你的系统很难提高这个限制,运转多个服务器是处理限制的一种方法。在这种情况下,你可能运转统一服务器的多个实例。 
    ISP经常为其客户提供本人的MySQL安装,有必要涉及单独的服务器。在这种情况下,你可能运转同一版本的多个实例或不同版本,如果不同的客户想要不同版本的MySQL。 
    很自然地,运转多个服务器比只运转一个服务器要复杂得多。如果你安装多个版本,你不能在同一个地方安装所有东西。当服务器运转时,某些参数必须或很可能对每个服务器是独一的,它们包括服务器在哪安装、其数据目录的路径名、TCP/IP端口和UNIX域套接字路径名以及用于运转服务器的UNIX账号(如果你不再同一账号下运转所有服务器)。如果你决定运转多个服务器,一定要留意你使用的参数,是你不至于。