Code前端首页关于Code前端联系我们

本文将让你了解启动MySQL的整个过程

terry 2年前 (2023-09-26) 阅读数 47 #数据库

在开发应用程序时,更重要的是作为客户端连接到已经启动的MySQL服务器,所以我们需要知道如何启动MySQL服务器以及如何启动。对启动参数以及启动完成后如何改变MySQL的行为了解不多。

事实上,MySQL服务器启动或运行过程中各种启动参数的设置对MySQL的行为和性能有着决定性的影响。因此,在本文中我们将探讨MySQL服务器的启动和性能。有关关机、配置文件和系统变量的一些详细信息。

在类 Unix 操作系统上启动和关闭 MySQL

虽然 MySQL 支持多种平台和操作系统,例如 Windows 和 Mac OS,但作为数据库服务器,MySQL 更多时候运行在 Unix 上类似操作系统,例如 Centos 和 Ubuntu。

在类Unix操作系统中,启动MySQL的方式有很多种。我们可以手动运行MySQL,也可以将MySQL设置为系统默认服务并在系统启动时自动运行。

设置启动帐户

在启动MySQL之前,首先需要考虑的是使用哪个登录帐户来运行MySQL。如果没有进行任何设置,通常会使用我们当前登录的帐户作为MySQL的启动帐户。

设立启动账户的注意事项

这里所说的是我们必须自己设立启动账户的情况。事实上,有些安装方法会自动为我们设置启动帐户。此时我们不需要自己设置。 。不要使用root帐户作为MySQL启动帐户,您可以轻松获得root权限并完全控制我们的服务器,这是非常危险的。

您应该始终使用相同的帐户来启动MySQL

您应该使用相同的帐户来启动服务器软件。如果我们在启动服务软件时使用不同的帐户,则该软件生成的某些文件属于不同的帐户。 ,此时软件管理的文件权限就会变得杂乱,权限混乱。

应使用低权限帐户运行MySQL

不要使用root帐户启动MySQL,因此需要创建一些低权限帐户作为启动帐户。在这种情况下,即使你受到黑客攻击,损失也会有限。控制范围内。

添加启动帐户

如果需要指定MySQL服务器的运行帐户,可以使用下面的创建方式来创建。例如下面我们创建一个名为 mysql 的账户:

# 下面两条命令需要使用root来执行
useradd -g mysql mysql
复制代码

如果您之前使用过其他账户启动过 MySQL,则还必须创建该 mysql 账户所属的 MySQL 数据目录的用户和用户组,例如:

# 下面两条命令需要使用root来执行
$ chown -R mysql /usr/local/mysql/data
$ chgrp -R  mysql /usr/local/mysql/data
复制代码

设置启动账户有两种方式

在配置文件中指定启动账户,例如我们可以在 /etc/my.cnf 中指定启动账户。在cnf文件中添加以下选项:

[mysqld]
user=mysql
复制代码

这样MySQL启动时就会使用mysql作为启动帐户。

至于MySQL配置文件,后面会有更详细的解释。

也可以直接在启动元素中指向启动账号,例如:

#以mysql作为启动用户
mysqld -u mysql
复制代码

关于MySQL启动元素的内容,后面会有更详细的解释。

启动MySQL

在Linux中,通常有以下几种方式启动MySQL服务器。我们来一一介绍一下。

mysqld

mysqld命令是MySQL的主程序。通过执行mysqld命令,可以启动MySQL守护进程,即MySQL服务器。通过mysqld启动MySQL服务器是最直接、最容易的,但也是最少使用的方式。

# 在MySQL安装目录的bin目录下执行
$ mysqld
复制代码

mysqld_safe

mysqld_safe是MySQL的启动脚本。 - 服务器。

# 查看mysqld_safe支持的选项
$ mysqld_safe --help
复制代码

需要注意的是,mysqld_safe脚本在某些平台上没有安装。这是因为这些平台支持在系统上启动和关闭mysql,所以mysqld_safe是不切实际的。需要。

mysql.server

mysql.server也是一个用于管理MySQL服务器的脚本。底层调用是 mysqld_safe 脚本。

启动MySQL

$ mysql.server start
复制代码

关闭MySQL

$ mysql.server stop
复制代码

mysqld_safe不会启动,我的mysh服务器ql。被安装。

mysqld_multi

mysqld_multi是MySQL提供的一个脚本,用于管理多个MySQL服务器。它可以同时启动或停止多个MySQL服务器。当我们运行脚本mysqld_multie时,脚本将在配置文件中查找名为[mysqldN]的选项。 N可以是任何正整数。

mysqld_multi的完整使用如下:

# GNR表示我们上面提到的N
mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]
复制代码

现在我们定义一个配置文件,如下图:

[mysqld1]
socket     = /tmp/mysql.sock2
port       = 3306
pid-file   = /usr/local/mysql/data2/hostname.pid2
datadir    = /usr/local/mysql/data2
language   = /usr/local/mysql/share/mysql/english
user       = unix_user1

[mysqld2]
mysqld     = /path/to/mysqld_safe
ledir      = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3307
pid-file   = /usr/local/mysql/data3/hostname.pid3
datadir    = /usr/local/mysql/data3
language   = /usr/local/mysql/share/mysql/swedish
user       = unix_user2
复制代码

使用以下命令分别配置定义的所有文件服务器:server,如:

mysqld_multi start 1
复制代码

mysqld_safe相同。在某些支持mysql启动和关闭的平台上,不会安装mysqld_multi脚本。

关闭MySQL

我们之前演示过两种关闭MySQL服务器的方法。当然,我们也可以使用mysqladmin命令关闭MySQL服务器,例如:

mysqladmin -p -u root shutdown
复制代码

在Windows上启动和关闭MySQL

在Windows操作系统中启动MySQL服务器有两种方法。一种方法是像Linux一样直接通过命令行启动它。第二种方法是将MySQL注册为Windows服务。这样MySQL就可以随着Windows启动而启动了。启动,也可以通过界面启动。

命令行启动和关闭

mysqld
复制代码

与Linux操作系统类似,我们可以使用mysqladmin命令通过Windows服务关闭运行

mysqladmin -p -u root shutdown
复制代码

启动和关闭的MySQL服务器❙Windows操作系统除上述之外除了运行命令自行启动之外,还可以通过Windows服务来管理MySQL。

注册 Windows 服务

使用以下命令将 MySQL 注册为 Windows 服务:

mysqld --install
复制代码

如果不希望 MySQL 服务在启动时自动启动,可以使用以下命令: 使用以上注册命令 服务名称为mysqld。我们还可以自定义服务名称,例如:

# service_name为自定义的服务名
mysqld --install service_name
复制代码

也可以在注册Windows服务时指定下载的配置文件,例如:

mysqld --install service_name --default-file=filename
复制代码

Start

通过上面的命令,我们MySQL就注册为一个Windows 服务,所以我们可以使用下面的命令来启动 MySQL:

net start mysql
复制代码

关闭

如果 MySQL 注册为 Windows 服务,还可以使用下面的命令来关闭 MySQL。

net stop mysql
复制代码

删除Windows服务

如果要删除Windows服务,可以使用上面的命令停止该服务,然后执行以下命令:

sc delete mysql
复制代码

设置启动项

我们演示启动时上面的MySQL服务器,启动命令后面没有任何参数,这意味着MySQL会使用自己程序的默认参数。如果我们想要改变这些参数,我们可以在使用boot命令的时候一一指定。

例如,MySQL 默认监听 3306 端口。我们可以在启动时将端口更改为 3307,例如:

$ mysqld -P3307
复制代码

使用以下命令查看 mysqld 的所有选项参数: ❀For ❀For e 、mysql.servermysqld_multi,还可以看到参数: MySQL选项参数支持长选项和短选项。 Long Option参数比较长,如--user和--posrt称为长选项,而-P和-u称为短选项,如:

mysqld --user=mysql --port=3307
复制代码

MySQL配置文件

我们上面讲过。这种方法简单直接通过启动参数来控制MySQL服务器的行为,如果需要指定的启动参数很多,那么每次运行MySQL的时候都需要在命令行中指定很多参数,这样就很麻烦了。不方便。

所以在MySQL中也支持使用配置文件(或选项文件)来存储启动项。当我们在配置文件中指定相应的选项后,启动MySQL时就会应用该配置。文件中的选项用作启动项,例如我们前面示例中的 /etc/my.cnf 文件:

[mysqld]
user=mysql
复制代码

使用 --no-defaults 选项启动的 MySQL 程序不会读取除 .mylogin 之外的任何选项文件。 cnf。

$ mysqld --no-defaults
复制代码

如果配置文件中指定的选项与命令行中指定的选项相同,则命令行中指定的选项优先。例如,我们在配置文件中引用user=mysql,但在命令行中使用--user=。 mysql作为启动参数,如:

mysqld --user=test
复制代码

这样就使用test作为MySQL的启动帐号。

配置文件加载顺序

MySQ配置文件通常有cnf后缀,但在Windows上它们也可以有ini后缀。我们看一下配置文件的加载顺序。

类Unix配置文件

对于类Unix操作系统,配置文件将按照以下顺序加载:

文件路径和名称对应说明/c. 全球有效
/etc/mysql/my.cnf 全球有效
SYSCONFDIR/my.cnfcnf 全球有效 特定于服务器的选项(仅限服务器)
defaults- extra-file命令行指定的额外配置文件路径
~/.my.cnf用户特定选项,~代表当前用户的主位置~/.mylogin.cnf用户特定的登录路径选项(仅限客户端),~代表当前用户的主目录

SYSCONFDIR代表安装MySQL编译源码和CMake时DSYSCONFDIR选项指定的目录。如果不指定,则默认为源码的etc目录。 $MYSQL_HOME是我们可以自己指定的环境变量。

Windows相关的配置文件

对于Windows操作系统,启动MySQL时,各个配置文件会按照以下顺序加载:

文件路径和名称IR%%– 。 ini, %WINDIR% \my.cnf 有效全局
C:\my.ini, C:\my.cnf 有效全局
BASEDIR\my.ini, BASEDIR\my.ini cnf全局有效
defaults-extra-file在命令行上指定的额外配置文件路径
%APPDATA%\MySQL.mylogin.cnf command command 客户端路径

% WINDIR% 通常指 C:\WINDOWS 目录。当然,我们也可以通过下面的命令来查看:

C:\> echo %WINDIR%
复制代码

%APPDATA%的值是Windows操作系统用来存储应用程序数据的目录。也可以在命令行视图中找到:

C:\> echo %APPDATA%
复制代码

BASEDIR 是 MySQL 的基本安装目录。如果我们安装MySQL5.7,这个目录通常是指C:\PROGRAMDIR\MySQL\MySQL 5.7 Server。 PROGRAMDIR 表示 Program Files 目录。

--default-extra-file

虽然MySQL在启动时会按顺序加载前面提到的配置文件,但是你也可以通过--default-extra-file选项其他配置,比如:

$ mysqld --default-extra-file=/home/test/config/my.cnf
复制代码

mylogin.cnf

MySQL配置文件通常是纯文本文件,可以使用通用文本文件编辑器进行编辑,但mylogin.cnf文件是一个例外,mylogin.cnf文件。使用程序mysql_config_editor生成的加密文件。 mylogin.cnf 文件仅对客户端命令(mysql、mysqladmin 等)有效。该文件只能包含用户、主机、密码、socket等和客户端登录相关的选项。

如何编写MySQL配置文件

MySQL配置的格式通常可以有多个opt_name=value❀name 选项如下所示:

[group]
opt_name1=value1
opt_name2=value2
opt_name3
...
opt_nameN=valueN

[group]
opt_name1=value1
opt_name2=value2
opt_name3
...
opt_nameN=valueN
复制代码

使用#或;注释掉一行选项,例如:

[mysql]
;user=mysql
#port=3306
复制代码

group 必须括在方括号 ([]) 中以指示选项组。常用的值有server、mysqld、 mysqld_safe、client、mysql、mysqladmin、mysqldump,分别对应不同的MySQL命令。

但是服务器和客户端,服务器选项组代表的是服务器命令的选项,所以服务器命令如mysqld、mysqld_safe可以读取[服务器]选项组的配置到客户端命令。 ,以便mysql、mysqladmin、mysqldump等客户端命令可以读取[client]选项组。

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

[mysqldump]
quick
复制代码

系统变量

对于已经启动的MySQL服务器,不再可以通过启动项或者配置文件来改变MySQL服务器的行为。这可以通过设置 MySQL 系统变量来完成。

查看系统变量

通过命令行客户端登录 MySQL 服务器后,我们可以通过以下命令打印 MySQL 系统变量:

mysql> show variables
复制代码

由于 Direct Show Variables 命令会打印我们您所看到的所有系统变量可以添加之类的来过滤掉系统变量,如:

mysql> show variables like '%character_set_client%'
复制代码
设置系统变量

MySQL系统变量可以分为session和scope全局系统变量。 (会话变量)。

全局系统变量(全局变量):对所有连接到服务器的客户端有用。

Session系统变量(会话变量):仅当前连接会话生效。

系统变量可以通过SET语句进行设置。 SET后跟GLOBAL是全局系统变量设置,SESSION是synSESSION系统,如下: 您还可以使用以下语法:

SET [@@(GLOBAL|SESSION).]var_name = var_value;
复制代码

简单示例:

mysql> set global character_set_client=utf8;
复制代码

如果我们在设置系统变量时不指定global或者session,则默认是设置session系统变量,如:

mysql> set character_set_client=utf8;
复制代码

显示不同作用域的系统变量 通过上面的理解我们知道,当我们启动MySQL时通过启动元素或者配置文件的各种参数,我们是否可以控制MySQL服务器的各种行为,甚至即使MySQL服务器启动了,我们仍然可以通过系统变量来控制MySQL服务器。

作者:张俊红
链接:https://juejin.im/post/5d81df766fb9a06b2650cc72❙❝ 商业转载请联系作者授权。非商业转载请注明来源。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门