本文将让你了解启动MySQL的整个过程
在开发应用程序时,更重要的是作为客户端连接到已经启动的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服务器的行为,如果需要指定的启动参数很多,那么每次运行MySQL的时候都需要在命令行中指定很多参数,这样就很麻烦了。不方便。 所以在MySQL中也支持使用配置文件(或选项文件)来存储启动项。当我们在配置文件中指定相应的选项后,启动MySQL时就会应用该配置。文件中的选项用作启动项,例如我们前面示例中的 /etc/my.cnf 文件: 使用 --no-defaults 选项启动的 MySQL 程序不会读取除 .mylogin 之外的任何选项文件。 cnf。 如果配置文件中指定的选项与命令行中指定的选项相同,则命令行中指定的选项优先。例如,我们在配置文件中引用user=mysql,但在命令行中使用--user=。 mysql作为启动参数,如: 这样就使用test作为MySQL的启动帐号。 MySQ配置文件通常有cnf后缀,但在Windows上它们也可以有ini后缀。我们看一下配置文件的加载顺序。 对于类Unix操作系统,配置文件将按照以下顺序加载: SYSCONFDIR代表安装MySQL编译源码和CMake时DSYSCONFDIR选项指定的目录。如果不指定,则默认为源码的etc目录。 $MYSQL_HOME是我们可以自己指定的环境变量。 对于Windows操作系统,启动MySQL时,各个配置文件会按照以下顺序加载: % WINDIR% 通常指 C:\WINDOWS 目录。当然,我们也可以通过下面的命令来查看: %APPDATA%的值是Windows操作系统用来存储应用程序数据的目录。也可以在命令行视图中找到: BASEDIR 是 MySQL 的基本安装目录。如果我们安装MySQL5.7,这个目录通常是指C:\PROGRAMDIR\MySQL\MySQL 5.7 Server。 PROGRAMDIR 表示 Program Files 目录。 虽然MySQL在启动时会按顺序加载前面提到的配置文件,但是你也可以通过 MySQL配置文件通常是纯文本文件,可以使用通用文本文件编辑器进行编辑,但mylogin.cnf文件是一个例外,mylogin.cnf文件。使用程序 MySQL配置的格式通常可以有多个 使用#或;注释掉一行选项,例如: group 必须括在方括号 ([]) 中以指示选项组。常用的值有server、mysqld、 但是服务器和客户端,服务器选项组代表的是服务器命令的选项,所以服务器命令如mysqld、 对于已经启动的MySQL服务器,不再可以通过启动项或者配置文件来改变MySQL服务器的行为。这可以通过设置 MySQL 系统变量来完成。 通过命令行客户端登录 MySQL 服务器后,我们可以通过以下命令打印 MySQL 系统变量: 由于 Direct Show Variables 命令会打印我们您所看到的所有系统变量可以添加 MySQL系统变量可以分为session和scope全局系统变量。 (会话变量)。 全局系统变量(全局变量):对所有连接到服务器的客户端有用。 Session系统变量(会话变量):仅当前连接会话生效。 系统变量可以通过 简单示例: 如果我们在设置系统变量时不指定global或者session,则默认是设置session系统变量,如: 显示不同作用域的系统变量 通过上面的理解我们知道,当我们启动MySQL时通过启动元素或者配置文件的各种参数,我们是否可以控制MySQL服务器的各种行为,甚至即使MySQL服务器启动了,我们仍然可以通过系统变量来控制MySQL服务器。 作者:张俊红mysql.server
、mysqld_multi,还可以看到参数: MySQL选项参数支持长选项和短选项。 Long Option参数比较长,如--user和--posrt称为长选项,而-P和-u称为短选项,如:
mysqld --user=mysql --port=3307
复制代码
MySQL配置文件
[mysqld]
user=mysql
复制代码
$ mysqld --no-defaults
复制代码
mysqld --user=test
复制代码
配置文件加载顺序
类Unix配置文件
文件路径和名称 对应说明/c. 全球有效 /etc/mysql/my.cnf 全球有效 SYSCONFDIR/my.cnf cnf 全球有效 特定于服务器的选项(仅限服务器) defaults- extra-file 命令行指定的额外配置文件路径 ~/.my.cnf 用户特定选项,~代表当前用户的主位置~/.mylogin.cnf 用户特定的登录路径选项(仅限客户端),~代表当前用户的主目录 Windows相关的配置文件
文件路径和名称 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 客户端路径 C:\> echo %WINDIR%
复制代码
C:\> echo %APPDATA%
复制代码
--default-extra-file
--default-extra-file选项其他配置,比如:
$ mysqld --default-extra-file=/home/test/config/my.cnf
复制代码
mylogin.cnf
mysql_config_editor
生成的加密文件。 mylogin.cnf 文件仅对客户端命令(mysql、mysqladmin 等)有效。该文件只能包含用户、主机、密码、socket等和客户端登录相关的选项。 如何编写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
复制代码
mysqld_safe
、client、mysql、mysqladmin、mysqldump,分别对应不同的MySQL命令。 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> show variables
复制代码
之类的
来过滤掉系统变量,如: mysql> show variables like '%character_set_client%'
复制代码
设置系统变量
SET
语句进行设置。 SET
后跟GLOBAL
是全局系统变量设置,SESSION是synSESSION系统,如下: 您还可以使用以下语法:
SET [@@(GLOBAL|SESSION).]var_name = var_value;
复制代码
mysql> set global character_set_client=utf8;
复制代码
mysql> set character_set_client=utf8;
复制代码
链接:https://juejin.im/post/5d81df766fb9a06b2650cc72❙❝ 商业转载请联系作者授权。非商业转载请注明来源。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。