共计 4379 个字符,预计需要花费 11 分钟才能阅读完成。
这篇文章主要介绍“MySQL 服务器怎么启动与停止”,在日常操作中,相信很多人在 MySQL 服务器怎么启动与停止问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL 服务器怎么启动与停止”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
一、以非特权用户运行 MySQL 服务器
在讨论如何启动 MySQL 服务器之前,让我们考虑一下应该以什么用户身份运行 MySQL 服务器。服务器可以手动或自动启动。如果你手动启动
它,服务器以你登录 Unix()的用户身份启动,即如果你用 paul 登录 Unix 并启动服务器,它用 paul 运行;如果你用 su 命令切换到 root,然
后运启动服务器,则它以 root 运行。然而,大多数情况下你可能不想手动启动服务器,最有可能是你安排 MySQL 服务器在系统引导时自动启动,
作为标准引导过程的一部分,在 Unix 下,该引导过程由系统的 Unix 用户 root 执行,并且任何在该过程中运行的进程均以 root 权限运行。
你应该牢记 MySQL 服务器启动过程的两个目标:
你想让服务器以某个非 root 用户运行。一般地,你想限制任何运行进程的能力,除非确实需要 root 权限,而 MySQL 不需要。
你想让服务器始终以同一个用户运行,此时用一个用户而其他时候以另一个不同的用户运行服务器是很不方便的,这造成了为文件和目录
以具有不同属主的数据目录下被创建,并可能导致服务器不能访问或表,这看你以哪个用户运行。统一用同一个用户运行服务器是你避
免这个问题。
要一个普通的非特权用户运行服务器,按照下列步骤:
选择一个用于运行服务器的用户,d 可以用任何用户运行。但在概念上较清晰的是为 MySQL 操作创建一个单独的用户。你也可以特别为
MySQL 选择一个用户组。本文使用 mysqladm 和 mysqlgrp 分别作为用户名和用户组名。
如果你已在自己的账号下安装好了 MySQL 且没有系统上的特殊管理权限,你将可能在你自己的用户 ID 下运行服务器。在这种情况下,用你自
己的登录名和用户组代替 mysqladm 和 mysqlgrp。
如果你在 RedHat Linux 上用 rpm 文件安装 MySQL,该安装将自动创建一个名为 mysql 的账号,用该账号代替 mysqladm。
如果必要,用系统通常的创建用户的过程创建服务器账号,你需要用 root 做它。
如果服务器在运行,停止它。
修改数据目录和任何子目录和文件的属主,这样使得 mysqladm 用户拥有它们。例如,如果数据目录是 /usr/local/var,你可以如下设置 mys
qladm 的属主(你需要以 root 运行这些命令):
#cd /usr/local/var
#chown -R mysqladm.mysqlgrp
修改数据目录和任何子目录和文件的权限,使得它们只能由 mysqladm 用户访问。如果数据目录是 /usr/local/var,你可以设置由 mysqladm
拥有的任何东西:
# cd /usr/local/var
# chmod -R go-rwx
当你设置数据目录及其内容的属主和模式时,注意符号连接。你需要顺着它们并改变它们指向的文件或目录的属主和模式。如果连接文件
的目录位于不属于你的地方,会有些麻烦,你可能需要 root 身份。
在你完成了上述过程后,你应该确保总是在以 mysqladm 或 root 登录时启动服务器,在后者,确定指定 –user=mysqladm 选项,使服务器能将
其用户 ID 切换到 mysqladm(同时也适用于系统启动过程)。
–user 选项在 MySQL 3.22 中引入,如果你有老版本,你可以使用 su 命令告诉系统在以 root 运行时在特定的用户下运行服务器。
二、启动服务器的方法
在我们确定了用于运行服务器的账号后,你可以选择如何安排启动服务器。你可以从命令行手动或在系统引导过程中自动地运行它。对于
启动服务器由三种主要方法:
直接调用 mysqld。
这可能是最不常用的方法,建议不要多使用,因此本文不详细介绍。
调用 safe_mysqld 脚本。
safe_mysqld 试图确定服务器程序和数据目录的位置。然后用反映这些值的选项调用服务器。safe_mysqld 将标准出错设备从服务器重定位
到数据目录下的一个出错文件,使得有它的一条记录。在启动服务器后,safe_mysqld 也监视它并且如果它死掉则重启它。safe_mysqld 常用于 B
SD 风格的 Unix 系统。
如果你以 root 或在系统引导期间启动 sqfe_mysqld,出错日志由 root 拥有,这可能在你以后试图用一个非特权用户调用 safe_mysqld 时将导
致“permission denied”(权限拒绝)错误,删除出错日志再试一下。
调用 mysql.server 脚本。
这个脚本通过有意用于 System V 的启动和停止系统上的 safe_mysqld.mysql.server 来启动服务器,该系统包含几个包含在机器进入或退出
一个给定运行级别时被点用的脚本目录。它可以用一个 start 或 stop 参数点用以表明你是想启动还是想停止服务器。
safe_mysqld 脚本安装在 MySQL 安装目录的 bin 目录下,或可在 MySQL 源代码分发的 scripts 目录下找到。mysql.server 脚本安装在 MySQL 安装
目录下的 share/mysqld 目录下或可以在 MySQL 源代码分发的 support_files 目录下找到。如果你想使用它们,你需要将它们拷贝到适当的目录下
。
对 BSD 风格的系统(FreeBSD,OpenBSD 等),通常在 /etc 目录下有几个文件在引导时初始化服务,这些文件通常有以“rc”开头的名字,且
它有可能由一个名为“rc.local”的文件(或类似的东西),特意用于启动本地安装的服务。在这样的系统上,你可能将类似于下列的行加入 r
c.local 文件中以启动服务器(如果 safe_mysqld 的目录在你的系统上不同,修改它即可):
if [-x /usr/local/bin/safe_mysqld]; then
/usr/local/bin/safe_mysqld
fi
对于对于 System V 风格的系统,你可以通过将 mysql.server 放在 /etc 下适当的启动目录下来安装它。如果你运行 Linux 并从一个 RPM 文件安
装 MySQL,这些已经为你做好了,否则将脚本安装在主启动目录下,并将指向它的连接放在适当的运行级别目录下。你也可以使脚本只能由 root
启动。
启动文件的目录布局各系统不同,所以你需要检查一下看看你的系统如何组织它们。例如在 Linux
PPC 上,目录是 /etc/rc.d 和 /etc/rc.d/rc3.d,这样你可以这样安装脚本:
#cp mysql.server /etc/rc.d/init.d
#cd /etc/init.d
#chmod 500 mysql.server
#cd /etc/rc.d/rc3.d
#ln -s ../init.d/mysql.server S99mysql
在 solaris 上,主脚本目录是 /etc/init.d,并且运行级别目录是 /etc/rd2.d,所以命令看上去像这样:
#cp mysql.server /etc/rc.d/init.d
#cd /etc/init.d
#chmod 500 mysql.server
#cd /etc/rc2.d
#ln -s ../init.d/mysql.server S99mysql
在系统启动时,S99mysql 脚本将自动用一个 start 参数调用。如果你有 chkconfig 命令(Linux 上有),你可以由它帮助安装 mysql.server 脚
本而不是象上面那样手工运行上述命令。
2.1 指定启动选项
如果你想在服务器启动时指定额外的启动选项,你可有两种方法。你可以修改你使用的启动脚本(safe_mysqld 或 mysql.server)并直接在
调用服务器的行上指定选项,或在一个选项文件中指定选项。建议你如果可能在一个全局选项文件中指定选项,它通常位于 /etc/my.cnf(Unix
)或 c:my.cnf(Windows)。
某些种类的信息无法以服务器选项指定。对于这些你可能需要修改 safe_mysqld。例如,如果你的服务器不能正确选择本地时区而以 GMT 返
回时间值,你可以设置 TZ 环境变量给它一个指示。如果你用 safe_mysqld 或 mysql.server 启动服务器,你可以将一个时区设置加到 safe_mysqld
。找到启动服务器的行并在该行前加入下列命令:
TZ=US/Central
export TZ
上面命令的语法是 Solaris 的,对于其他系统语法可能不同,请查阅相关手册。如果你确实修改了你的启动脚本,要记住下次你安装 MySQL
时(如升级到新版本),你的修改将失去,除非你首先在别处复制了启动脚本。在安装了新版本后,比较新旧版本的脚本,看看你需要重建什
么改变。
2.2 在启动时检查你的表
除了安排你的服务器在系统引导时启动,你可能要安装 myisamchk 和 isamchk 脚本,以在服务器启动前检查你的表。你可能在一个崩溃后重
启,有可能表已经损害,在启动前检查它是一个发现问题的好方法。
三、停止服务器
要手工启动服务器,使用 mysqladmin:
%mysqladmin shutdown
要自动停止服务器,你不需做特别的事情。BSD 系统一般通过向进程发一个 TERM 信号停止服务,它们或者正确应答它或被粗鲁地杀死。mysq
ld 在它收到这个信号时以终止作为应答。对于用 mysql.server 启动服务器的 System V 风格的系统,停止进程将用一个 stop 参数调用该脚本,告
诉服务器终止,当然假定你已安装了 mysql.server。
四、如果你不能连接服务器,如何重新获得对服务器的控制
在某些情况下,你可能由于不能连接它而手工重启服务器。当然,这有点矛盾。因为一般你通过连接服务器而手工关掉它,那么这种情况
如何会出现。
首先,MySQL root 口令可以已经设置为你不知道的值,这可能发生在你修改口令时,例如,如果你在输入新口令时偶然键入一个不可见的
控制字符。你也可能忘记口令。
其次,连接 localhost 通常通过一个 Unix 域套接字文件进行,一般是 /tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。
这可能发生在你的系统运行一个 cron 任务删除了 /tmp 下的临时文件。
如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。这里的骗局是
你不能用套接字建立连接因为
到此,关于“MySQL 服务器怎么启动与停止”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!