DBA解决MySQL服务器的启动和关闭的问题_MySQL
mysql自动关闭
作为MySQL管理员,一个普通的目标就是确保服务器尽可能地处于运行状态,使得客户机能够随时访问它。但是,有时最好关闭服务器(例如,如果正在进行数据库的重定位,不希望服务器在该数据库中更新表)。保持服务器运行和偶尔关闭它的需求关系不是本书所解决的。但是我们至少可以讨论如何使服务器启动和停止,以便您具备进行这两个操作的能力。
本章的说明只用于UNIX 系统。如果正在运行Windows 系统,可以跳过本章,因为附录A“获得和安装软件”一节中包含了所有需要的启动和关闭命令。
调用本章给出的命令
为了简洁,在大多数情况中,诸如mysqladmin、mysqldump 等程序在本章中没有给出任何-h、-u或-p选项。笔者假定您将会用连接服务器所需的任何选项调用这些程序。
用无特权的用户账号运行MySQL服务器
在讨论如何启动服务器之前,考虑一下在服务器启动时应该运行哪个账号。服务器可以手工和自动启动。如果手工启动,则服务器以UNIX 用户身份运行(您恰好作为该用户进行了注册)。即,如果笔者以paul 进行注册并启动服务器,则它将以paul身份运行。如果用s u命令将用户切换到root 然后启动服务器,则服务器以root身份运行。
但是,大多数时候可能都不会采用手工启动服务器。您很可能将安排服务器在系统引导时作为标准启动过程的一部分自动地运行。在UNIX中,该启动过程由系统以UNIX 的root用户的身份执行,该过程中启动的任何进程都用root的权限运行。
应该紧记MySQL服务器启动过程的两个目标:
要服务器以某些非root的用户身份启动。通常,除非进程真的需要root访问权而MySQL办不到,否则应限制任何进程的能力。
要服务器始终以同一个用户的身份运行。服务器有时作为一个用户运行而有时又作为另一个用户运行时会产生矛盾。这将导致文件和目录以不同的所有权在该数据下被创建,甚至引起服务器不能访问数据库或表。以同一个用户的身份一致地运行服务器可以避免该问题。
为了以标准的、非特权的用户身份运行数据库,可按如下步骤执行该过程:
1) 选择用于运行服务器的账号。mysqld 可以以任何用户身份运行,但是很明显,它只为MySQL活动创建了一个单独的账号。您也可以为MySQL专门指定一个组。笔者将调用的这些用户和组的名字命名为mysqladm 和mysqlgrp。如果您使用了其他的名字,则在本书中有mysqladm 和mysqlgrp 的地方替换它们
如果您在自己的账号下安装了MySQL并且系统中没有特定的管理权限,则您可以在自己的ID 用户下运行服务器。在这种情况下,应使用您自己的注册名和组名替代mysqladm 和mysqlgrp 。
如果您利用RPM 文件在RedHat Linux 下安装了MySQL,则该安装程序将在mysql名下自动创建了一个账号。应使用该名字替换mysqladm。
2) 如果必要的话,可用系统常用的账号创建过程(account-creation)来创建服务器账号。这需要以root 身份进行操作。
3) 关闭服务器(如果它在运行)。
4) 修改数据目录以及任何子目录和文件的所有权,使mysqladm 用户拥有它们。例如,如果数据目录是/usr/local/var,则可按以下设置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 切换到mysqladm(该选项在系统启动过程中也可使用)。
--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 或在系统启动程序中启动safe _ mysqld,则错误日志将由root拥有。如果您试着以非特权的用户身份调用safe _ mysqld,则可能引起“所有权被拒绝”的错误。删除该错误文件再试一次。
调用mysql.server脚本。通过运行safe _ mysqld . mysql. server,该脚本启动服务器。该脚本建议在使用System V 启动/关闭系统的系统中使用。这个系统包括几个包含在机器登录或退出一个特定运行级时被调用的脚本的目录。它可以利用start 或stop 参数进行调用,以指明希望启动还是关闭服务器。
safe_mysqld 脚本被安装在MySQL安装目录的bin 目录下,或者在MySQL源程序分发包的scripts 目录中。mysql.server 脚本安装在MySQL安装目录的share/mysql目录下,或者在MySQL源程序分发包的support-files 目录中。如果要使用它,应将其拷贝到合适的启动目录中。
对于BSD 风格的系统,在/etc 目录中有几个文件相对应,它们在引导期间开始服务。这些文件的名字通常以‘rc’开始,因此很可能会有一个名为rc.local (或类似的名字)的文件来启动本地的安装服务。在这样的系统中,您可能要按如下方法添加一些行到rc.local 文件中以启动服务器(如果路径与您系统中的不同,可将其修改成safe _ mysqld):
<ccid_code></ccid_code>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 和/etc/rc.d/rc3.d。应该按如下方法安装该脚本:
<ccid_code></ccid_code># 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 中, 主脚本目录为/etc/init.d,运行级目录为/etc/rc2.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 中的/etc/ my.cnf 和Windows 中的c:\my.cnf。
某些种类的信息不能作为服务器的选项指定。为了这些选项,您可能需要修改safe _ mysqld。例如,如果服务器不能正确地拾取GMT 中的本地时区(local time zone)和返回时间值,可以设置TZ 环境变量以给该变量一个提示。如果用safe_mysqld 或mysql. server启动服务器,可以将时区设置增加到safe_mysqld 中。找到启动服务器的命令行,并在该行之前增加下列命令:
<ccid_code></ccid_code>TZ=US/Central export TZ 로그인 후 복사 |
这个命令将TZ 设置为US Central 时区。您需要使用合适位置的时区。该语法是Solaris的,您的系统可能会有所不同。例如,设置TZ 变量的另一个常用语法为:
<ccid_code></ccid_code>TZ=CST6CDT export TZ 로그인 후 복사 |
如果修改了启动脚本,当下次安装MySQL时(如,升级到更新的版本),将失去这些修改,除非在之前将该启动脚本拷贝到了其他地方。在安装新的版本之后,将您的脚本与新安装的脚本进行比较,以便看看重新建立还需要做什么改动。
2. 在启动期间检查表:
除了在系统引导时安排服务器的启动外,您还可以安装一个脚本来运行mysamchk 和i s a m c h k,以便在服务器启动前对表进行检查。您可能打算在服务器崩溃后重新启动,但表可能已经毁坏了。在服务器启动前检查这些表是发现问题的好办法。第13 章包含了有关编写和安装这种脚本的细节。
关闭服务器
要想手工关闭服务器,可使用mysqladmin:% mysqladmin shutdown。
要想自动关闭服务器,您不需要做特别的操作。BSD 系统通常会通过给进程发送一个TERM 信号来关闭服务。进程或者对其作出反应,或者被随便地取消。当mysqld 接收到信号时,它会通过终止来响应。对于利用mysql.server 启动服务器的System V-风格的系统,该关闭进程将调用带有stop 参数的脚本来指示服务器进行关闭──当然,这是在假定您已经安装了mysql. ser ver的情况下进行的。
在不连接时收回服务器的控制
在某些环境中,由于不能连接到服务器,您需要用手工重新启动它。当然,这有点荒谬,因为一般是通过连接到服务器然后告知服务器终止来手工关闭服务器的。那么这种情况是怎样出现的?
首先,MySQL的root 口令可能得到了一个您不知道的值。这种情况可能是在修改口令时发生的─例如,如果在输入新的口令值时碰巧键入了一个不可见的控制字符。还有可能就是完全忘记了口令。
其次,对于localhost 的连接通常是通过UNIX 域的套接字文件进行的,它一般为/tmp/mysql. sock。如果该套接字文件被删除了,则本地客户机将不能进行连接。如果系统偶尔运行了一个删除/tmp 中的临时文件的cron作业,这种情况就可能会发生。
如果因为失去套接字文件而不能进行连接,可以通过重新启动服务器简单地进行恢复,因为服务器在启动期间重新建立了该文件。这里应知道的是,不能用该套接字建立连接(因为它已经不存在)而必须建立TCP/IP 连接。例如,如果服务器的主机是pit - viper. snake.net,则可以按如下方法进行连接:% mysqladmin -p -uroot -h pit-viper.snake.net shutdown。
如果此套接字文件被cron 作业删除,则问题将复发,直到您修改cron 作业或使用另一个套接字文件为止。您可以用全局选项文件指定另一个套接字文件。例如,如果数据目录为/usr/local/ var,则可通过将以下行添加到/etc/ my.cnf 中来移动套接字文件到那里:
<ccid_code></ccid_code>[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 和isamchk对表进行检查。
用--skip-grant-tables 选项重新启动服务器。该操作告诉服务器不要使用授权的表检查连接。这允许您作为root 用户不用输入口令即可进行连接。在连接之后,修改root的口令。
告诉服务器再利用mysqladmin flush-privileges 使用授权表启动。如果您的mysqladmin 版本不识别flush-privileges,试着进行重新加载。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











스마트폰 기술이 계속해서 발전하면서 휴대폰은 우리 일상생활에서 점점 더 중요한 역할을 하고 있습니다. Black Shark 휴대폰은 게이밍 성능에 중점을 둔 플래그십 휴대폰으로 플레이어들에게 큰 호응을 얻고 있습니다. 그러나 때로는 Black Shark 휴대폰을 켤 수 없는 상황에 직면하기도 합니다. 이때 이 문제를 해결하기 위해 몇 가지 조치를 취해야 합니다. 다음으로 Black Shark 휴대폰이 켜지지 않는 문제를 해결하는 방법을 알려주는 5가지 팁을 공유하겠습니다. 1단계: 배터리 전원을 확인하세요. 먼저 Black Shark 휴대폰의 전원이 충분한지 확인하세요. 휴대폰 배터리가 방전되었기 때문일 수 있습니다.

Windows 11 운영 체제에서 보안 센터는 사용자가 시스템 보안 상태를 모니터링하고 악성 코드로부터 보호하며 개인 정보를 보호하는 데 도움을 주는 중요한 기능입니다. 그러나 때로는 사용자가 특정 소프트웨어를 설치하거나 시스템 튜닝을 수행하는 경우와 같이 Security Center를 일시적으로 꺼야 할 수도 있습니다. 이 글에서는 시스템을 올바르고 안전하게 운영하기 위해 Windows 11 보안 센터를 끄는 방법을 자세히 소개합니다. 1. Windows 11 보안 센터를 끄는 방법 Windows 11에서는 보안 센터를 꺼도 작동하지 않습니다.

Kuaishou는 뛰어난 비디오 플레이어입니다. Kuaishou의 비밀번호 없는 결제 기능은 일상생활에서, 특히 플랫폼에서 필요한 상품을 구매할 때 큰 도움이 될 수 있습니다. 이제 취소를 해야 하는데 어떻게 취소할 수 있나요? 비밀번호 없이 결제를 취소하는 방법은 매우 간단합니다. 이 사이트의 전체 가이드를 함께 살펴보겠습니다. 모든 사람에게 도움이 되기를 바랍니다. Kuaishou에서 비밀번호 없는 결제를 종료하는 방법에 대한 튜토리얼 1. Kuaishou 앱을 열고 왼쪽 상단에 있는 세 개의 수평선을 클릭합니다. 2. Kuaishou 스토어를 클릭하세요. 3. 위 옵션바에서 비밀번호 없는 결제를 찾아 클릭해주세요. 4. 지원하려면 클릭하세요.

세계에서 가장 많은 사용자를 보유한 운영 체제 중 하나인 Windows 운영 체제는 항상 사용자들의 선호를 받아왔습니다. 그러나 Windows 시스템을 사용할 때 사용자는 바이러스 공격, 맬웨어 및 기타 위협과 같은 많은 보안 위험에 직면할 수 있습니다. 시스템 보안을 강화하기 위해 Windows 시스템에는 다양한 보안 보호 메커니즘이 내장되어 있으며 그 중 하나가 Windows 보안 센터의 실시간 보호 기능입니다. 오늘은 Windows 보안 센터에서 실시간 보호를 끄는 방법을 자세히 소개하겠습니다. 먼저,

Douyin은 사용자가 간단하게 자신의 삶을 기록하고 행복을 공유할 수 있는 인기 있는 짧은 비디오 소셜 플랫폼입니다. 비공개 메시징 기능은 Douyin에서 중요한 역할을 하며 사용자가 서로 상호 작용하는 주요 방법 중 하나입니다. 때로는 상대방이 비공개 메시지 모드를 꺼서 메시지를 보낼 수 없는 상황이 발생할 수 있습니다. 1. TikTok 비공개 메시지의 상대방이 비공개 메시지 모드를 끈 경우 비공개 메시지 모드를 어떻게 켜나요? 1. 상대방이 개인 정보 설정을 활성화했는지 확인하려면 먼저 상대방이 개인 메시지 수신을 제한했을 수 있는 개인 정보 설정을 활성화했는지 확인해야 합니다. 지인의 비공개 메시지만 허용하도록 설정되어 있는 경우, 서로 친구를 사귀거나 소셜 미디어 플랫폼을 통해 교류하는 등 다른 수단을 통해 연락을 시도할 수 있습니다. 2. 상대방이 개인 정보 보호 설정을 활성화하지 않은 경우 친구 요청을 보냅니다.

Windows 11은 Microsoft가 출시한 최신 운영 체제 버전입니다. 이전 버전에 비해 Windows 11의 중요한 기능 중 하나는 보안 센터입니다. Security Center는 사용자가 시스템의 보안 상태를 관리하고 모니터링하여 시스템이 맬웨어 및 기타 보안 위협으로부터 보호되도록 도와줍니다. Security Center는 시스템 보안을 보호하는 데 중요하지만, 때때로 사용자는 개인적인 필요나 기타 이유로 Security Center를 끄고 싶을 수도 있습니다. 이번 글에서는 W 사용법을 소개하겠습니다.

1. 휴대폰 설정에서 소리 및 진동을 클릭하세요. 2. 돌비 애트모스를 클릭하세요. 3. Dolby Atmos 뒤에 있는 스위치를 끕니다.

1. 잠자리에 들기 전에 Siri에게 물어볼 수 있습니다. 이 휴대폰은 누구의 휴대폰입니까? Siri가 자동으로 얼굴 인식을 비활성화하는 데 도움을 줍니다. 2. 비활성화하고 싶지 않다면 Face ID를 켜고 [Face ID를 활성화하려면 시선 필요]를 켜도록 선택할 수 있습니다. 이런 식으로 잠금 화면은 우리가 시청할 때만 열 수 있습니다.
