title: mysql启动
date: 2020-11-13 20:39:13
categories: 数据库
tags:
- mysql
description: mysql的一些启动命令介绍
mysql服务器可执行文件非常多,大多都在安装目录下的bin目录
mysqld
这个可执行文件就代表着MySQL服务器程序,运行这个可执行文件就可以直接启动一个服务器进程。但这个命令不常用,我们继续往下看更牛逼的启动命令-
mysqld_safe
mysqld_safe是一个启动脚本,它会间接的调用mysqld,而且还顺便启动了另外一个监控进程,这个监控进程在服务器进程挂了的时候,可以帮助重启它。另外,使用mysqld_safe启动服务器程序时,它会将服务器程序的出错信息和其他诊断信息重定向到某个文件中,产生出错日志,这样可以方便我们找出发生错误的原因。./bin/mysqld_safe --user=mysql & 200331 20:16:57 mysqld_safe Starting mysqld daemon with databases from /home/software/mysql/data #测试 bin/mysqladmin variables bin/mysqladmin version
mysqld_multi
其实我们一台计算机上也可以运行多个服务器实例,也就是运行多个MySQL服务器进程。mysql_multi可执行文件可以对每一个服务器进程的启动或停止进行监控。这个命令的使用比较复杂,本书主要是为了讲清楚MySQL服务器和客户端运行的过程,不会对启动多个服务器程序进行过多唠叨。
mysqld后缀的命令都是服务器相关的命令,mysql后缀的命令都是客户端相关的命令
-
mysqladmin
也是一种客户端,不过是用来管理的特殊客户端,比如查看服务器状态、关闭服务器、创建或删除数据库,重新加载授权表等# 关闭服务器 bin/mysqladmin -u root shutdown
mysql客户端程序
mysql -h主机名 -u用户名 -p密码
如果服务器进程监听的端口号不是默认的3306,我们也可以在使用mysql启动客户端程序时使用-P参数(大写的P,小写的p是用来指定密码的)来指定需要连接到的端口号
像 h、u、p 这样名称只有一个英文字母的参数称为短形式的参数,使用时前边需要加单短划线,像 host、user、password 这样大于一个英文字母的参数称为长形式的参数,使用时前边需要加双短划线。大写的P指定端口,小写的p是用来指定密码的
服务器处理客户端的请求
从图中我们可以看出,服务器程序处理来自客户端的查询请求大致需要经过三个部分,分别是连接管理、解析与优化、存储引擎。下边我们来详细看一下这三个部分都干了什么。
连接管理
客户端进程可以采用TCP/IP、命名管道或共享内存、Unix域套接字这几种方式之一来与服务器进程建立连接,每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程来专门处理与这个客户端的交互(采用线程池模式)查询缓存
MySQL服务器会把刚刚处理过的查询请求和结果缓存起来,如果下一次有一模一样的请求过来,直接从缓存中查找结果就好了,就不用再傻呵呵的去底层的表中查找了,不同客户端之间共享语法解析
如果查询缓存没有命中,接下来就需要进入正式的查询阶段了。因为客户端程序发送过来的请求只是一段文本而已,所以MySQL服务器程序首先要对这段文本做分析,判断请求的语法是否正确,然后从文本中将要查询的表、各种查询条件都提取出来放到MySQL服务器内部使用的一些数据结构上来查询优化
语法解析之后,服务器程序获得到了需要的信息,但光有这些是不够的,MySQL的优化程序会对我们的语句做一些优化,如外连接转换为内连接、表达式简化、子查询转为连接吧啦吧啦的一堆东西。优化的结果就是生成一个执行计划,表明了应该使用哪些索引进行查询,表之间的连接顺序是啥样的。我们可以使用EXPLAIN语句来查看某个语句的执行计划。
存储引擎
为了管理方便,人们把连接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存储的功能划分为MySQL server的功能,把真实存取数据的功能划分为存储引擎的功能。
各种不同的存储引擎向上边的MySQL server层提供统一的调用接口(也就是存储引擎API),包含了几十个底层函数,像”读取索引第一条内容”、”读取索引下一条内容”、”插入记录”等等。
mysql> mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
- 创建表时指定存储引擎
CREATE TABLE 表名(
建表语句;
) ENGINE = 存储引擎名称;
启动选项和配置文件
- 第一种:在启动服务器程序名时加入选项,--启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n]
mysqld -P3307
使用短形式指定启动选项时,选项名和选项值之间可以没有间隙,或者用空白字符隔开(-p选项有些特殊,-p和密码值之间不能有空白字符),也就是说上边的命令形式和下边的是等价的:
mysqld -P 3307
第二种:修改配置文件
在类unix操作系统中,Mysql会按照下列路径来寻找配置文件:
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cn
defaults-extra-file
~/.my.cnf
~/.mylogin.cnf
从上往下,优先级依次增高-
配置文件中的内容
置文件中的启动选项被划分为若干个组,每个组有一个组名,用中括号[]扩起来,像这样:[mysqld] (具体的启动选项...) [mysqld_safe] (具体的启动选项...) [client] (具体的启动选项...) [mysql] (具体的启动选项...)