MySQL之初识MySQL

261 阅读7分钟

客户端/服务端架构

在现在互联网的时代中,我们使用的电脑或手机软件,基本都是客户端/服务端的架构,例如我们平常使用的微信,

在我们手机上的微信是客户端软件,腾讯那边还有微信服务器,使用微信发送一条消息的过程如下:

  1. 微信客户端点击发送一条消息,客户端将封装好发送者和接收者的消息传递给服务器

  2. 服务器从接收到的消息中得到发送者和接收者,然后将消息发送给接收者,随后接收者的微信将显示新消息

MySQL的运行过程类似,首先用户在MySQL客户端上登录连接MySQL服务器,然后用户在客户端写好SQL以后发送到MySQL服务器上,

MySQL服务器解析SQL然后查询相应的数据,最后返回给客户端,步骤如下:

  1. 启动MySQL服务器

  2. 启动MySQL客户端,并登录服务器

  3. 在客户端中输入SQL,回车发送到服务器

  4. 服务器收到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下启动的方式有多种,每种都有些区别。

  1. mysqld

    执行 mysqld 文件,可以直接启动一个MySQL服务器进程,不过这个文件不常用。

  2. mysqld_safe

    mysqld_safe是一个启动脚本,其间接调用mysqld,并持续监控服务器的运行状态,如果服务器程序发生错误崩溃,该脚本可以帮助重启服务器程序,另外可以将出错信息和诊断信息记录到错误日志中,方便查找错误原因,

    出错日志默认会写到一个.err后缀的文件名中,该文件在MySQL的数据目录下。

  3. 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

  4. 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密码

参数意义如下:

  1. -h 表示服务器进程所在计算机的域名或ip。如果进程就在当前机器的话,可以省略此参数,或者填写localhost或127.0.0.1;也可以写成 "--host=主机名"的形式。

  2. -u 表示用户名;也可以写成 "--user=用户名" 的形式。

  3. -p 表示密码;可以写成 "--password=密码" 的形式。

-h、-u、-p这种只有一个英文字母的参数称为短形式的参数,使用时前面加单短划线,像host、user、password这种多个字母组成的,称为长形式的参数,使用时加双短划线。

连接本机的mysql如下:

mysql -hlocalhost -uroot -p123456

连接成功后一般会有如下信息:

Welcome ....
.......

mysql>

最后一行的 mysql> 是一个客户端的提示符,之后客户端需要发送到服务器的命令都要写在这个提示符后面,

如果想断开客户端与服务器的连接并且关闭客户端的话,可以在mysql>提示符后输入下面任意一个命令:

quit

exit

\q

输入上面几个命令以后,命令行将输出一个Bye,说明客户端程序已经关闭,注意是客户端,而不是服务器。

可以启动多个命令行打开客户端连接服务器,也可以用多台电脑连接同一个MySQL服务器,这些客户端之间是不会相互影响的。

连接注意事项

  1. 最好不要在一行命令中输入密码

    在一些系统中,直接在一行中输入密码,可能会被一台机器上的其他用户通过ps之类的命令看到,这样并不安全,因此我们可以像下面这么写:

    mysql -hlocalhost -uroot -p 输入这个命令后回车,将提示输入密码

    Enter password:,在这个位置输入密码,将不会被其他人看见。

  2. 在一行命令中输入密码时, -p和密码值之间不能有空白字符(其他的参数可以有)

    例如 mysql -h localhost -u root -p123456,其他的参数可以有空白,-p不可以有。

    如果写成 -p 123456 服务器将把123456当做数据库名称对待。

  3. mysql的各个参数顺序没有硬性规定,可以随意排序

    mysql -h localhost -u root -p

    mysql -u root -h localhost -p

    mysql -p -h localhost -u root

  4. 客户端和服务器在同一台机器上,-h参数可以省略

    直接写成 mysql -u root -p

  5. 在linux系统下,如果省去-u参数,会以当前登录用户作为用户名

    如果当前登录用户是root,下面两种写法意思一样:

    mysql -u root -p

    mysql -p

    对于Windows系统,默认用户名是ODBC,可以通过设置环境变量USER添加一个默认的用户名。