客户端/服务端架构
在现在互联网的时代中,我们使用的电脑或手机软件,基本都是客户端/服务端的架构,例如我们平常使用的微信,
在我们手机上的微信是客户端软件,腾讯那边还有微信服务器,使用微信发送一条消息的过程如下:
-
微信客户端点击发送一条消息,客户端将封装好发送者和接收者的消息传递给服务器
-
服务器从接收到的消息中得到发送者和接收者,然后将消息发送给接收者,随后接收者的微信将显示新消息
MySQL的运行过程类似,首先用户在MySQL客户端上登录连接MySQL服务器,然后用户在客户端写好SQL以后发送到MySQL服务器上,
MySQL服务器解析SQL然后查询相应的数据,最后返回给客户端,步骤如下:
-
启动MySQL服务器
-
启动MySQL客户端,并登录服务器
-
在客户端中输入SQL,回车发送到服务器
-
服务器收到SQL,解析并做数据查询,最后返回给客户端
微信、记事本、QQ都是计算机中的一个进程,MySQL客户端和服务器也是计算机中的一个进程,MySQL服务器进程也被称为 MySQL数据库实例(instance) 。
MySQL的安装
MySQL的安装方式一般有两种,一种是下载MySQL的源码自行编译安装,还有一种是下载官方的安装包进行安装。
MySQL的大部分安装包都包含了服务器和客户端两个程序,在Linux环境下可以使用不同的RPM包分别安装客户端和服务器程序。
在MacOS下,MySQL的默认安装目录一般是 /usr/local/mysql/
,
在Windows下,目录默认是 C/Program Files/MySQL/MySQL Server 5.7/
。
bin目录下的可执行文件
MacOS在MySQL的安装目录下有一个bin(/usr/local/mysql/bin)目录,这个目录下有许多可执行文件,如下所示:
mysql
mysql.server
mysqladmin
mysqlbinlog
mysqlcheck
mysqld
mysqld_multi
mysqld_safe
mysqldump
mysqlimport
mysqlpump
....
复制代码
Windows中与MacOS类似,不过可执行文件都以.exe作为拓展名, 注意,不同的操作系统下,bin目录中包含的可执行文件并不是完全相同的,这些可执行文件中,有的是服务器程序,有的是客户端程序。
在图形化操作系统中,可以直接点击这些可执行文件运行程序,不过一般我们会在命令行(Linux中是Shell,Windows中是cmd)中去输入命令运行这些程序,执行命令如下:
# 相对路径执行
./bin/mysqld
# 绝对路径执行
/usr/local/mysql/bin/mysqld
复制代码
可以在操作系统的环境变量PATH中添加MySQL的bin目录(/usr/local/mysql/bin/),之后在命令行中直接输入 mysqld 就可以运行。
启动MySQL服务器
1. Linux下启动
Linux下启动的方式有多种,每种都有些区别。
-
mysqld
执行 mysqld 文件,可以直接启动一个MySQL服务器进程,不过这个文件不常用。
-
mysqld_safe
mysqld_safe是一个启动脚本,其间接调用mysqld,并持续监控服务器的运行状态,如果服务器程序发生错误崩溃,该脚本可以帮助重启服务器程序,另外可以将出错信息和诊断信息记录到错误日志中,方便查找错误原因,
出错日志默认会写到一个.err后缀的文件名中,该文件在MySQL的数据目录下。
-
mysql.server
mysql.server会间接的调用mysqld_safe,在执行mysql.server时在后面添加start参数就可以启动服务器程序了,
mysql.server start
mysql.server 其实是一个链接文件,对应的实际文件是 ../support-files/mysql.server,
通过源码、或者没有自动安装mysql.server脚本的安装包安装MySQL时,需要手动安装这个脚本。
也可以通过该脚本关闭正在运行的服务器程序,将start换成stop即可,如:
mysql.server stop
-
mysqld_multi
该脚本可以启动或者多个MySQL服务器进程,是的,MySQL在一台机器上可以启动多个实例,该脚本也可以报告多个进程的运行状态。
mysqld_safe、mysql.server、mysqld-multi本质是一个Shell脚本,可以直接用文本编辑器打开浏览。
2. Windows下启动
1. 手动启动
在windows的bin目录中有一个mysqld文件,双击即可启动mysql服务器,如果没有启动成功,
可以使用mysqld --console
命令启动服务器程序,这样可以把启动过程中的错误信息在黑框中带出来,方便定位错误。
2. 以服务形式启动
如果想长期运行一个MySQL程序,无论谁在使用这台电脑都使的程序不受影响,可以将其注册为一个Windows服务,由操作系统帮忙管理该程序。
Windows的服务注册如下:
"完整的可执行文件路径" --install [-manual] [服务名]
如果添加了 -manual 选项,就表示在Windows系统启动的时候不自动启动该服务,否则该服务将自动启动,
服务名也可以被省略不写,默认是MySQL,例如Windows下mysqld的完整路径是:
C/Program Files/MySQL/MySQL Server 5.7/bin/mysqld
注册为Windows服务,可以写成下面:
"C/Program Files/MySQL/MySQL Server 5.7/bin/mysqld" --install
注册成服务后,可以通过下面的命令来启动和停止mysql,也可以通过图形化的方式来启动和停止。
# 启动
net start MySQL
# 停止
net stop MySQL
复制代码
启动MySQL客户端程序
通过bin目录下的mysql文件可以和服务器程序进行交互,即发送请求和接收处理结果,启动该程序时,需要一些参数,格式如下:
mysql -h主机名 -u用户名 -p密码
参数意义如下:
-
-h 表示服务器进程所在计算机的域名或ip。如果进程就在当前机器的话,可以省略此参数,或者填写localhost或127.0.0.1;也可以写成 "--host=主机名"的形式。
-
-u 表示用户名;也可以写成 "--user=用户名" 的形式。
-
-p 表示密码;可以写成 "--password=密码" 的形式。
-h、-u、-p这种只有一个英文字母的参数称为短形式的参数,使用时前面加单短划线,像host、user、password这种多个字母组成的,称为长形式的参数,使用时加双短划线。
连接本机的mysql如下:
mysql -hlocalhost -uroot -p123456
连接成功后一般会有如下信息:
Welcome ....
.......
mysql>
复制代码
最后一行的 mysql> 是一个客户端的提示符,之后客户端需要发送到服务器的命令都要写在这个提示符后面,
如果想断开客户端与服务器的连接并且关闭客户端的话,可以在mysql>提示符后输入下面任意一个命令:
quit
exit
\q
复制代码
输入上面几个命令以后,命令行将输出一个Bye,说明客户端程序已经关闭,注意是客户端,而不是服务器。
可以启动多个命令行打开客户端连接服务器,也可以用多台电脑连接同一个MySQL服务器,这些客户端之间是不会相互影响的。
连接注意事项
-
最好不要在一行命令中输入密码
在一些系统中,直接在一行中输入密码,可能会被一台机器上的其他用户通过ps之类的命令看到,这样并不安全,因此我们可以像下面这么写:
mysql -hlocalhost -uroot -p
输入这个命令后回车,将提示输入密码Enter password:
,在这个位置输入密码,将不会被其他人看见。 -
在一行命令中输入密码时, -p和密码值之间不能有空白字符(其他的参数可以有)
例如
mysql -h localhost -u root -p123456
,其他的参数可以有空白,-p不可以有。如果写成
-p 123456
服务器将把123456当做数据库名称对待。 -
mysql的各个参数顺序没有硬性规定,可以随意排序
mysql -h localhost -u root -p
mysql -u root -h localhost -p
mysql -p -h localhost -u root
-
客户端和服务器在同一台机器上,-h参数可以省略
直接写成
mysql -u root -p
-
在linux系统下,如果省去-u参数,会以当前登录用户作为用户名
如果当前登录用户是root,下面两种写法意思一样:
mysql -u root -p
mysql -p
对于Windows系统,默认用户名是ODBC,可以通过设置环境变量USER添加一个默认的用户名。