MySQL服务器的启动和关闭

本章的说明只用于UNIX 系统。如果正在运行Windows 系统,可以跳过本章,因为附录A“获得和安装软件”一节中包含了所有需要的启动和关闭命令。 
    调用本章给出的命令 
    为了简洁,在大多数情况中,诸如mysqla d m i n、mysqldump 等程序在本章中没有给出任何- h、- u或- p选项。笔者假定您将会用连接服务器所需的任何选项调用这些程序。

用无特权的用户账号运行MySQL服务器

在讨论如何启动服务器之前,考虑一下在服务器启动时应该运行哪个账号。服务器可以手工和自动启动。如果手工启动,则服务器以UNIX 用户身份运行(您恰好作为该用户进行了注册)。即,如果笔者以paul 进行注册并启动服务器,则它将以paul 身份运行。如果用s u命令将用户切换到root 然后启动服务器,则服务器以root 身份运行。 
    但是,大多数时候可能都不会采用手工启动服务器。您很可能将安排服务器在系统引导时作为标准启动过程的一部分自动地运行。在UNIX中,该启动过程由系统以UNIX 的r o o t用户的身份执行,该过程中启动的任何进程都用root 的权限运行。 
    应该紧记MySQL服务器启动过程的两个目标: 
    要服务器以某些非root 的用户身份启动。通常,除非进程真的需要root 访问权而mysql办不到,否则应限制任何进程的能力。 
    要服务器始终以同一个用户的身份运行。服务器有时作为一个用户运行而有时又作为另一个用户运行时会产生矛盾。这将导致文件和目录以不同的所有权在该数据下被创建,甚至引起服务器不能访问数据库或表。以同一个用户的身份一致地运行服务器可以避免该问题。 
    为了以标准的、非特权的用户身份运行数据库,可按如下步骤执行该过程: 
    1) 选择用于运行服务器的账号。mysqld 可以以任何用户身份运行,但是很明显,它只为MySQL活动创建了一个单独的账号。您也可以为MySQL专门指定一个组。笔者将调用的这些用户和组的名字命名为mysqladm 和mysqlg r p。如果您使用了其他的名字,则在本书中有mysqladm 和mysqlgrp 的地方替换它们 
    如果您在自己的账号下安装了MySQL并且系统中没有特定的管理权限,则您可以在自己的ID 用户下运行服务器。在这种情况下,应使用您自己的注册名和组名替代mysqladm 和mysqlgrp 。 
    如果您利用RPM 文件在RedHat Linux 下安装了MySQL,则该安装程序将在mysql名下自动创建了一个账号。应使用该名字替换mysqladm 。 
    2) 如果必要的话,可用系统常用的账号创建过程( a c count - c r e a t i o n)来创建服务器账号。这需要以root 身份进行操作。 
    3) 关闭服务器(如果它在运行)。 
    4) 修改数据目录以及任何子目录和文件的所有权,使mysqladm 用户拥有它们。例如,如果数据目录是/ us r / l o c a l / v a r,则可按以下设置mysqladm 用户的所有权: 
    # cd /usr/local/var 移动到数据目录 
    # chown -r mysqladmin.mysqlgrp 设置所有目录和文件的所有权 
    5) 修改数据目录以及任何子目录和文件的许可权,使得只有mysqladm 用户能够访问它们。设置该方式以避免其他人员访问是一种好得安全预防措施。如果数据目录是/ us r / l o c a l / v a r,则可通过mysqladm 用户按下列操作设置应具有的一切(您需要以root 身份运行这些命令): 
    # cd /usr/local/var 移动到数据目录 
    # chmod -R go -rwx 使所有一切只对mysqladm 可访问 
    在设置数据目录及其内容的所有权和方式时,观察符号连接。您需要跟踪符号连接并修改所指向的文件或目录的所有权和方式。如果这些连接文件所定位的目录不属于您,则这样做可能会引起麻烦,因此您必须是root 用户。 
    在完成前述过程后,应确保无论是作为mysqladm 还是作为root 用户注册都始终启动服务器。在后者中,要确保指定了--user = mysqladm 的选项,使服务器可以将其用户ID 切换到mysqla d m(该选项在系统启动过程中也可使用)。 
    --user 选项被增加到MySQL3.22 的mysql中。如果您的版本比MySQL3.22 旧,则在启动服务器并作为root 用户运行时,可以使用su命令指示系统在指定账号下运行服务器。您需要阅读有关su的人工页,因为作为一个指定用户运行命令的语法被改变了。

启动服务器的方法

如果您已经确定了用来运行服务器的账号,则可以选择安排怎样启动服务器。可以从命令行手工运行,或在系统启动过程中自动运行服务器。有三种启动服务器的主要方法: 
    直接调用mysqld。这或许是最小的命令方法。除了说明mysqld --help 是一个有用的命令(用它可以查找您可利用其他启动方法使用的选项)外,笔者不打算进一步讨论它。 
    调用safe_mysqld 脚本。safe_mysqld 试图确定服务器程序和数据目录的位置,然后利用反映这些位置的选项调用服务器。safe_mysqld 将服务器的标准错误输出重定向到数据目录的错误文件中,并以记录的形式出现。在启动服务器后, safe_mysqld 还监控 
服务器,并在其死机时重新启动。safe_mysqld 通常用于UNIX 的BSD 风格的版本。 
    如果您曾经作为root 或在系统启动程序中启动s a f e _ mysqld,则错误日志将由r o o t拥有。如果您试着以非特权的用户身份调用s a f e _ mysqld,则可能引起“所有权被拒绝”的错误。删除该错误文件再试一次。
调用mysql.server 脚本。通过运行s a f e _ mysqld . mysql. server,该脚本启动服务器。该脚本建议在使用System V 启动/关闭系统的系统中使用。这个系统包括几个包含在机器登录或退出一个特定运行级时被调用的脚本的目录。它可以利用start 或stop 参数进行调用,以指明希望启动还是关闭服务器。 
    safe_mysqld 脚本被安装在MySQL安装目录的bin 目录下,或者在MySQL源程序分发包的scripts 目录中。mysql.server 脚本安装在MySQL安装目录的s h a r e / mysql目录下,或者在MySQL源程序分发包的support-files 目录中。如果要使用它,应将其 
拷贝到合适的启动目录中。 
    对于BSD 风格的系统,在/etc 目录中有几个文件相对应,它们在引导期间开始服务。这些文件的名字通常以‘ r c'开始,因此很可能会有一个名为rc.local (或类似的名字)的文件来启动本地的安装服务。在这样的系统中,您可能要按如下方法添加一些行到rc.local 文件中以启动服务器(如果路径与您系统中的不同,可将其修改成s a f e _ mysqld): 
    if (-x /usr/local/bin/safe_mysqld);then 
        /usr/local/bin/safe_mysqld &  
    fi 
    对于System V 风格的系统,可以通过将其放置在/etc 下的合适的启动目录中来安装mysql. server。如果您运行Linux 并从RPM 文件中安装了MySQL,那么这此操作可能已经完成了。否则,应该在主启动脚本目录中安装该脚本,并在合适的运行级目录中设置对它的连接。您还可使该脚本仅对root 用户可执行。 
    启动文件目录的布局随系统而变化,因此将需要全面检查来弄清系统是怎样组织它们的。例如,在LinuxPPC 中,这些目录为/etc/rc.d/init.d 和/ e t c / r c . d / r c 3 . d。应该按如下方法安装该脚本: 
    # cp mysql.server /etc/rc.d/init.d 
    # cd /etc/init.d 
    # chmod 500 mysql.server 
    # cd /etc/rc.d/rc3.d 
    # In -s ../init.d/mysql.server S99mysql    在Solaris 中,主脚本目录为/ e t c / i n i t . d,运行级目录为/ e t c / r c 2 . d,因此上述命令将替换为: 
    #cp mysql.server /etc/init.d 
    # cd /etc/init.d 
    # chmod 500 mysql.server 
    # cd /etc/rc2.d 
    # In -s ../init.d/mysql.server s99mysql    在系统启动期间,S99mysql脚本利用start 参数自动调用。 
    如果您拥有chkconfig 命令(它在Linux 中很常用),则可用其帮助安装mysql.server 脚本来代替手工运行上述的命令。 
    1. 指定启动选项 
    在启动服务器时,如果想要指定附加的启动选项,可用两种方法进行操作。您可以修改所使用的启动脚本( safe_mysqld 或mysql. server),并在调用服务器的命令行中直接指定这些选项。您还可以在选项文件中指定选项。笔者建议,如果可能的话,应在全局选项文件中指定服务器选项。通常该文件的位置是UNIX 中的/ e t c / my.cnf 和Windows 中的c:my.cnf(有关使用选项文件的细节,请参阅附录E)。 
    某些种类的信息不能作为服务器的选项指定。为了这些选项,您可能需要修改s a f e _ mysqld。例如,如果服务器不能正确地拾取GMT 中的本地时区(local time zone)和返回时间值,可以设置TZ 环境变量以给该变量一个提示。如果用safe_mysqld 或mysql. ser ver启动服务器,可以将时区设置增加到safe_mysqld 中。找到启动服务器的命令行,并在该行之前增加下列命令: 
    TZ=US/Central 
    export TZ 
    这个命令将TZ 设置为US Central 时区。您需要使用合适位置的时区。该语法是S o l a r i s 的,您的系统可能会有所不同。例如,设置TZ 变量的另一个常用语法为: 
    TZ=CST6CDT 
    export TZ 
    如果修改了启动脚本,当下次安装MySQL时(如,升级到更新的版本),将失去这些修改,除非在之前将该启动脚本拷贝到了其他地方。在安装新的版本之后,将您的脚本与新安装的脚本进行比较,以便看看重新建立还需要做什么改动。 
    2. 在启动期间检查表 
    除了在系统引导时安排服务器的启动外,您还可以安装一个脚本来运行mysamchk 和i s a m c h k,以便在服务器启动前对表进行检查。您可能打算在服务器崩溃后重新启动,但表可能已经毁坏了。在服务器启动前检查这些表是发现问题的好办法。第13 章包含了有关编写和安装这种脚本的细节。

关闭服务器

要想手工关闭服务器,可使用mysqla d m i n: 
    % mysqladmin shutdown 
    要想自动关闭服务器,您不需要做特别的操作。BSD 系统通常会通过给进程发送一个TERM 信号来关闭服务。进程或者对其作出反应,或者被随便地取消。当mysqld 接收到信号时,它会通过终止来响应。对于利用mysql.server 启动服务器的System V-风格的系统,该关闭进程将调用带有stop 参数的脚本来指示服务器进行关闭──当然,这是在假定您已经安装了mysql. ser ver的情况下进行的。

在不连接时收回服务器的控制

在某些环境中,由于不能连接到服务器,您需要用手工重新启动它。当然,这有点荒谬,因为一般是通过连接到服务器然后告知服务器终止来手工关闭服务器的。那么这种情况是怎样出现的? 
    首先,MySQL的root 口令可能得到了一个您不知道的值。这种情况可能是在修改口令时发生的─例如,如果在输入新的口令值时碰巧键入了一个不可见的控制字符。还有可能就是完全忘记了口令。 
    其次,对于localhost 的连接通常是通过UNIX 域的套接字文件进行的,它一般为/ t m p / mysql. s o c k。如果该套接字文件被删除了,则本地客户机将不能进行连接。如果系统偶尔运行了一个删除/tmp 中的临时文件的cron 作业,这种情况就可能会发生。 
    如果因为失去套接字文件而不能进行连接,可以通过重新启动服务器简单地进行恢复,因为服务器在启动期间重新建立了该文件。这里应知道的是,不能用该套接字建立连接(因为它已经不存在)而必须建立TCP/IP 连接。例如,如果服务器的主机是pit - viper. s n a k e . n e t,则可以按如下方法进行连接: 
    % mysqladmin -p -uroot -h pit-viper.snake.net shutdown 
    如果此套接字文件被cron 作业删除,则问题将复发,直到您修改cron 作业或使用另一个套接字文件为止。您可以用全局选项文件指定另一个套接字文件。例如,如果数据目录为/ us r / l o c a l / v a r,则可通过将以下行添加到/ e t c / my.cnf 中来移动套接字文件到那里: 
    [mysqld] 
    socket=/usr/local/var/mysql.sock 
    [client] 
    socket=/usr/local/var/mysql.sock 
    路径名是为服务器和客户机程序二者所指定的,以便它们能使用相同的套接字文件。如果只对服务器设置路径名,客户机程序将仍然在旧的位置上查找套接字文件。在做出这个修改后应重新启动服务器,使它在新的位置创建套接字文件。 
    如果由于您忘记了root 的口令或将其修改为一个您不知道的值而不能进行连接,则需要收回服务器的控制以便重新设置口令: 
    关闭服务器。如果您以root 用户的身份在服务器主机上进行登录,可用kill 命令终止服务器。通过使用ps 命令或通过查看服务器的PID 文件(通常放在数据目录中)能找出服务器的ID 进程。 
    最好先试着用标准的kill 命令取消服务器,该命令将一个TERM 信号发送到服务器上,以查看服务器是否通过关闭信号来响应。也就是说,表和日志将被适当地刷新。如果服务器被堵塞并且没有响应正常的终止信号,可使用kill -9 强制终止它。这是最后的一个 
方法,因为可能存在未刷新的更改,并且要承担非一致状态下将表保留下来的风险。如果用kill -9 终止服务器,应确保在重新启动服务器之前利用myisamchk 和i s a m c h k对表进行检查(参见第13章) 
    用--skip-grant-tables 选项重新启动服务器。该操作告诉服务器不要使用授权的表检查连接。这允许您作为root 用户不用输入口令即可进行连接。在连接之后,修改r o o t的口令。 
    告诉服务器再利用mysqladmin flush-privileges 使用授权表启动。如果您的mysqladmin 版本不识别f l us h - priv i l e g e s,试着进行重新加载。

(0)

相关推荐

  • SQL服务器无法启动的解决方法

    系统用户administrator 密码改变后,注销重新登录,发现SQL Server没有随机启动.手动从服务管理器中启动,提示"由于登录失败而无法启动服务". 原因: 安装SQL Server时是使用默认登录用户来作为启动SQL Server服务的账号(对于自己使用的单机,通常就是administrator),当该用户更改了用户名(如把administrator改成admin)或更改了其口令时,再次启动服务器,就出现"同于登录失败而无法启动服务"的错误了. 解决方

  • SQLSERVERAGENT警告:事件 ID: 312

    Successfully re-opened the local eventlog - NOTE: Some events may have been missed. Attempting to to re-open the local eventlog... Unable to read local eventlog (reason: 事件日志文件已在读取间更改.). 事件类型: 警告 事件来源: SQLSERVERAGENT 事件种类: Alert Engine 事件 ID: 312 日期:

  • SQL Server SQL Agent服务使用教程小结

    1.在查询分析器理启动或停止SQL Agent服务 启动 use master go xp_cmdshell 'net start SQLSERVERAGENT' 停止 use master go xp_cmdshell 'net stop SQLSERVERAGENT' 将服务的启动从手工方式改为自动启动方式 exec xp_cmdshell 'scm -Action 7 -Service mssqlserver -SvcStartType 2' 直接用命令行执行引号内的内容也可以. 2.启动

  • SQL Agent服务无法启动的解决方法

    问题现象 从阿里云上镜像过来的一台数据库服务器,SQL Agent服务启动不了,提示服务启动后停止.(原数据库服务器是正常的,怀疑跟镜像有关) 如下是系统日志和SQL Agent的日志 复制代码 代码如下: SQLServerAgent could not be started (reason: 无法连接到服务器"(local)":SQLServerAgent 无法启动) 2016-05-20 11:09:03 - ? [100] Microsoft SQLServerAgent 版本

  • 错误22022 SQLServerAgent当前未运行的解决方法

    SQLserver代理已经启动了,服务里的SQLServerAgent响应服务也已经开启了 但是启动作业的时候还是提示"错误22022:SQLServerAgent当前未运行,因此,无法就本操作对其进行提示." 有高人遇到过这个问题吗? 怎么解决能给个方法吗? SQLServerAgent 这个服务已经启动了 "控制面板 ->管理->服务->SQLSERVERAGENT->设置为自动启动"---这个已经这是好了 但是问题依然存在,一启动作业就

  • 解决Mysql服务器启动时报错问题的方法

    一.概述 文章主要介绍因为启动mysql服务报错引发的问题:"ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)",顺带扩充一些其它的知识点,当前版本是red hat 6,mysql 5.6. 二.步骤 报错的源头 问题解决 1.权限 报错的源头就是它了,一般这种问题首先会想到的就是权限问题,就是/var/lib/mysql该文件夹的权限 上图可以看到my

  • MySQL服务器的启动和关闭

    本章的说明只用于UNIX 系统.如果正在运行Windows 系统,可以跳过本章,因为附录A"获得和安装软件"一节中包含了所有需要的启动和关闭命令.      调用本章给出的命令      为了简洁,在大多数情况中,诸如mysqla d m i n.mysqldump 等程序在本章中没有给出任何- h.- u或- p选项.笔者假定您将会用连接服务器所需的任何选项调用这些程序. 用无特权的用户账号运行MySQL服务器 在讨论如何启动服务器之前,考虑一下在服务器启动时应该运行哪个账号.服务器

  • MySQL中的启动和关闭命令

    目录 一.Windws系统 二.Linux系统 1.service命令 2. /etc/init.d/mysql 3.mysqld命令 4.mysqld_safe命令 5.mysqld_multi命令 6.mysqladmin命令 7.杀进程 8.总结 备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL的启动和关闭命令 一.Windws系统 --  启动MySQL net start mysql -- 关闭MySQL net stop mysql 二.Linux系统 1.

  • Mysql服务器的启动与停止(二)

    三.停止服务器      要手工启动服务器,使用MySQLadmin: %mysqladmin shutdown 要自动停止服务器,你不需做特别的事情.BSD系统一般通过向进程发一个TERM信号停止服务,它们或者正确应答它或被粗鲁地杀死.mysqld在它收到这个信号时以终止作为应答.对于用mysql.server启动服务器的System V风格的系统,停止进程将用一个stop参数调用该脚本,告诉服务器终止,当然假定你已安装了mysql.server. 四.如果你不能连接服务器,如何重新获得对服务

  • Mysql服务器的启动与停止(一)

    在讨论如何启动MySQL服务器之前,让我们考虑一下应该以什么用户身份运行MySQL服务器.服务器可以手动或自动启动.如果你手动启动它,服务器以你登录Unix(Linux)的用户身份启动,即如果你用paul登录Unix并启动服务器,它用paul运行:如果你用su命令切换到root,然后运启动服务器,则它以root运行.然而,大多数情况下你可能不想手动启动服务器,最有可能是你安排MySQL服务器在系统引导时自动启动,作为标准引导过程的一部分,在Unix下,该引导过程由系统的Unix用户root执行,

  • centos下安装mysql服务器的方法

    项目需要就在现有的服务器上面重新安装了个mysql服务器,还挺费劲儿呢,因为之前都是在我的笔记本上面试验的,它的系统是Ubuntu的,什么路径啊,启动方式啊.都不一样所以这次还是让我纠结了一把:下面把我安装过程中遇到的问题给传上来,首先rpm格式安装就不多说了,主要是mysql的配置文件在:/etc/my.cnf这里,需要修改: 复制代码 代码如下: [mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Default t

  • Mysql服务器的安装配置与启动关闭方法详解

    1.官网下载: https://dev.mysql.com/downloads/ 找到Mysql Community Server 点击 点击download下载,可以选择下载路径,我下载在d盘: 下载好了需要: 新建mysql.ini文件 内容: [mysql] 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 设置mysql的安装目录 basedir=D:\java web\mysql\mysq

  • linxu服务器上nginx启动、关闭、配置检查命令(推荐)

    关闭nginx ./nginx -s stop --快速停止nginx 也可以ps -ef|grep ninx kill -9 进程号 直接启动nginx,常用语第一次启 ./sbin/nginx -c conf/nginx.conf nginx检查配置 ./nginx -t --echo出来 success或者fail nginx重启 ./nginx -s reload --会重新加载配置文件后重启 常用方式: 1.假设你要修改你的域名,修改了server_name后,需要检查配置,执行nin

  • 简单实现MySQL服务器的优化配置方法

    公司网站访问量越来越大,MySQL自然成为瓶颈,因此最近我一直在研究 MySQL 的优化,第一步自然想到的是 MySQL 系统参数的优化,作为一个访问量很大的网站(日20万人次以上)的数据库系统,不可能指望 MySQL 默认的系统参数能够让 MySQL运行得非常顺畅.以下的文章主要介绍的是对MySQL服务器的优化配置的时机操作步骤,同时本文也介绍了MySQL服务器的优化配置的实际应用代码,如果你对其相关的实际应用感兴趣的话,你就可以点击以下的文章对其进行了解. 你能用这个命令得到MySQL服务器

  • MySQL 服务器参数说明及查看 设置方法

    查看参数:SHOW VARIABLES: 设置参数:SET GLOBAL 参数名称=value:如设置数据库最大连接数为:SET GLOBAL max_connections=1000. 用shell>mysqld-help这个命令可以得到一张所有mysql选项和可配置变量的表.输出以下信息: possible variables for option--set-variable(-o) are: back_log current value:5 //要求mysql能有的连接数量.back_lo

随机推荐