mysqld
mysql
mysqld
这个可执行文件就表明着MySql
服务器程序,运行这个可执行文件就能够直接启动一个服务器进程。mysqld_safe
程序员
mysqld_safe
是一个启动脚本,它会间接的调用mysql
,并且还顺便启动了另一个监控服务,这个监控进程在服务器进程挂了的时候,能够帮助重启它。另外,使用mysqld_safe
启动服务器程序时,它会将服务器程序的出错信息和其余诊断信息重定向到某个文件中,产生出错误日志,这样能够方便咱们找出发生错误的缘由。mysql.server
sql
mysql.server
也是一个启动脚本,它会间接的调用mysql_safe
,在调用mysql.server
时在后边指定start
参数就能够启动服务器程序了:mysql.server start
mysqld_multi
windows
mysqld_multi
能够对每个服务器进程的启动或中止进行监控。tips:
windows下,命令:"完整的可执行文件路径" --install [-manual] [服务名]
能够指定程序注册为windows服务。
mysql -h主机名 -u用户名 -p密码
参数名 | 含义 |
---|---|
-h |
计算机的域名或者IP地址 |
-u |
用户名 |
-p |
密码 |
运行着的服务器程序和客户端程序本质上都是计算机上的一个进程,因此客户端进程向服务器进程发送请求并获得回复的过程本质上是一个进程间通讯的过程!
MySql
支持下边三种客户端进程和服务器进程的通讯方式。
TCP/IP缓存
mysqld -P3307
,-P
能够改变MySql
服务器监听哪一个端口mysql -p3307
,-P
可让客户端去链接服务器的指定端口命名管道和共享内存服务器
windows
用户可用Unix域套接字文件网络
localhost
,或者指定了--protocal=socket
的启动参数,那服务器程序和客户端程序之间就能够经过Unix域套接字文件来进行通讯了。MySql服务器程序默认监听的Unix域套接字文件路径为/tmp/mysql.sock
,客户端程序也默认链接到这个Unix域套接字文件。若是咱们想改变这个默认路径,能够在启动服务器程序时指定socket参数mysqld --socket=/tmp/a.txt
mysql -hlocalhost -uroot --socket=/tmp/a.txt -p
客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)
。大体是如下三个部分socket
链接管理:性能
解析与优化优化
MySql
的优化程序会对咱们的语句作一些优化存储引擎
blackhole
、MyIsam
、InnoDB
...SHOW ENGINES;
CREATE TABLE 表名( 建表语句; ) ENGINE = 存储引擎名称;
ALTER TABLE 表名 ENGINE = 存储引擎名称;
在命令行上使用选项,格式:
--启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n]
mysqld --skip-networking
:客户端不能用-h
(TCP/IP
)进行网络通讯mysqld --default-storage-engine=MyISAM
:把默认引擎设置为MyISAM
在命令行中设置启动选项只对当次启动生效
Windows操做系统的配置文件
路径名 | 备注 |
---|---|
%WINDIR%my.ini, %WINDIR%my.cnf | WINDIR一般是C:WINDOWS |
C:my.ini, C:my.cnf | |
BASEDIRmy.ini, BASEDIRmy.cnf | BASEDIR指的是MySQL安装目录的路径 |
defaults-extra-file | 命令行指定的额外配置文件路径 |
%APPDATA%MySQL.mylogin.cnf | 登陆路径选项(仅限客户端) |
列表中最后一个名为.mylogin.cnf
配置文件有点儿特殊,它不是一个纯文本文件(其余的配置文件都是纯文本文件),而是使用mysql_config_editor
实用程序建立的加密文件。文件中只能包含一些用于启动客户端软件时链接服务器的一些选项,包括host
、user
、password
、port
和socket
。并且它只能被客户端程序所使用。
类Unix操做系统中的配置文件
路径名 | 备注 |
---|---|
/etc/my.cnf | |
/etc/mysql/my.cnf | |
SYSCONFDIR/my.cnf | CMake 构建MySQL 时使用SYSCONFDIR 选项指定的目录 |
$MYSQL_HOME/my.cnf | 特定于服务器的选项(仅限服务器) |
defaults-extra-file | 命令行指定的额外配置文件路径 |
~/.my.cnf | 用户特定选项 |
~/.mylogin.cnf | 用户特定的登陆路径选项(仅限客户端) |
配置文件的内容
[server] option1 #这是option1,该选项不须要选项值 option2 = value2 #这是option2,该选项须要选项值 [mysqld] (具体的启动选项...) [mysqld_safe] (具体的启动选项...) [client] (具体的启动选项...) [mysql] (具体的启动选项...) [mysqladmin] (具体的启动选项...)
若是咱们在多个配置文件中设置了相同的启动选项,那以最后一个配置文件中的为准
启动命令 | 类别 | 能读取的组 |
---|---|---|
mysqld | 启动服务器 | [mysqld]、[server] |
mysqld_safe | 启动服务器 | [mysqld]、[server]、[mysqld_safe] |
mysql.server | 启动服务器 | [mysqld]、[server]、[mysql.server] |
mysql | 启动客户端 | [mysql]、[client] |
mysqladmin | 启动客户端 | [mysqladmin]、[client] |
mysqldump | 启动客户端 | [mysqldump]、[client] |
MySql
到默认的路径下搜索配置文件(就是上表中列出的那些),能够在命令行指定defaults-file
选项,好比这样(以UNIX
系统为例):mysqld --defaults-file=/tmp/myconfig.txt
。若是文件不存在或没法访问,则会发生错误。若是同一个启动选项既出如今命令行中,又出如今配置文件中,那么以命令行中的启动选项为准
1.系统变量简介MySql
服务器程序运行过程当中会用到许多影响程序行为的变量
SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
2.设置系统变量
服务器程序运行过程当中设置
设置不一样做用范围的系统变量
GLOBAL
:全局变量,影响服务器的总体操做。SESSION
:会话变量,影响某个客户端链接的操做。(注:SESSION
有个别名叫LOCAL
)服务器会为每一个链接的客户端维护一组会话变量
设置:
SET [GLOBAL|SESSION] 系统变量名 = 值;
SET GLOBAL default_storage_engine = MyISAM
SET [@@(GLOBAL|SESSION).]var_name = XXX;
SET @@GLOBAL.default_storage_engine = MyISAM
SET default_storage_engine = MyISAM
若是在设置系统变量的语句中省略了做用范围,默认的做用范围就是
SESSION
若是某个客户端改变了某个系统变量在GLOBAL
做用范围的值,并不会影响该系统变量在当前已经链接的客户端做用范围为SESSION
的值,只会影响后续连入的客户端在做用范围为SESSION
的值。
3.启动选项和系统变量的区别
- 大部分的系统变量均可以被看成启动选项传入 - 有些系统变量是在程序运行过程当中自动生成的,是不能够看成启动选项来设置,好比`auto_increment_offset`、`character_set_client` - 有些启动选项也不是系统变量,好比`defaults-file`
4.状态变量
为了让咱们更好的了解服务器程序的运行状况,MySQL服务器程序中维护了好多关于程序运行状态的变量。因为状态变量是用来显示服务器程序运行情况的,因此它们的值只能由服务器程序本身来设置,咱们程序员是不能设置的。如:Threads_connected