mysql学习需要连接服务器吗_从零开始学MySQL(三) MySQL客户端与服务器端的互动...-程序员宅基地

技术标签: mysql学习需要连接服务器吗  

上上节篇幅以安装为主,上篇则只讲述术语、基础知识,因此只略微提及了调用或使用mysql所需要使用的“命令”,相信不少小伙伴都有如隔靴搔痒一般。

① 比如带给读者诸多不解了,因为你会思考:

——“mysql -p -u root -h 服务器地址”这串长长的字符到底有什么特殊的含义,竟打开了MySQL的大门?聪明的你可能早就抱着好奇心自行“摆渡”了。而答案不过是在连接mysql服务器时,应当使用的  “身份验证”  这一把钥匙罢了。

——因输入错误但尚未执行,或已执行了的语句,想取消该状态,有何解?

② 另外一个情境是,先前笔者每每登录总是需要键入相同的多个字符,如‘mysql -p -uroot -h......(此处省略更多参数)’,久而久之就对于“这些连接参数造成的重复工作”不胜其烦。既然无法跳过“身份验证”这一环节,那么能否适当减少文本的输入量呢?

本节,我们就致力解决这两个问题吧。

这里相当于是对上上节的补充,如果想将只是体系梳理完整,还请您务必这么想——因为知识就是从已知中发现未知,从而进行扩展的,对吧?

-------------------------------------------------------------------------------------------

本文的规则:黑色字体为正常步骤,红色字体为希望能引起读者的注意,笔者用意大致是出于“警示”或“引导”这两种。

本文阅读建议:因分节(一)、分节(二)介绍的知识在所有系统上通用,建议详读;而分节(三)则是面向Linux系统,建议心有余力的小伙伴可以读一下。想要对此有所了解的读者应先浏览一下大致的模块,然后根据自己的需要选择相应方法,详细看一遍后进行尝试。在这里也提一下,对于Windows系统,其实现方法是差不多的,只要将调用mysql的命令及参数整合进环境变量或.bat(批处理文件)即可,故不做过多的介绍。

本文概览:

(一)连接MySQL

(二)执行或清除已输入的SQL语句

(三)在连接MySQL上“偷懒”(选读)

若本文出现错误或有所遗漏等问题,还请读者指出,鄙人不胜感激。

-------------------------------------------------------------------------------------------

(一)连接MySQL

(1)身份验证:使用MySQL之前,需按要求提供足够的信息作为登录凭证。

调用mysql所使用的命令提示符为:mysql [option]

mysql -h 主机名 -p -u 用户名

PS: 上面的命令形式较为常见,因为至少需要指定用户名和密码(这是下限。如果在调用mysql时提供了更多的选项,往往是因为为了让mysqld响应更多的需求)。

① 关于-h:MySQL采用的是“C/S”体系结构,因此在通信前,需要先使客户端与服务器保持连接状态。有鉴于此,当我们直接在服务器上运行时,加不加-h便无所谓了,因为默认是127.0.0.1或者说是localhost嘛。(这样,通过-h来指定服务器的ip或名称就不难理解了吧。)

② 关于-p和-u:用户和密码只是您登录服务器的一个安全凭证。(试想,如果陌生人可以随意进入你家,那不就乱套了么?以此类比,也不是随随便便就可以让所有人进入数据库的。因此出于安全考虑,你说-p和-u是不是很有必要呢?)

这里需要注意的是:参照-h和-u,密码也是可以直接输入的,但密码应该“紧跟在-p后面”,如-p123456,而不是-p 123456。而-h和-u后面的内容既可以贴紧关键字也可以先空一格再输入内容。(有些小伙伴就纠结为什么?那你这样想就可以了:别人很容易就能获悉服务器名和你的账户名,但你的密码也是公开的么?它们的性质肯定不一样,因材施教呗。)

对于多用户操作系统,不建议直接在shell中输入密码。

这里还需指出,您也可以将-h 主机名换为--host=主机名,将-p换为--password=用户密码,将-u 用户名换为--user=用户名。

ps: 登录时,记得将主机名和用户名换成你自己的哟。键入上述命令并回车,你将会收到“Enter password: ”的提示,密码输入无误便可继续收到“mysql> ”,这就意味这我们连接上服务器了。

(2)终止会话:使用MySQL之后,想要退出怎么办?通常是使用完毕,

只要掌握下面命令中的其中一个,你就可以随时退出咯。

1 quit

2 exit

3 \q

(二)执行或清除已输入的SQL语句

鉴于前面已经讲过客户端链接到服务器端的内容,因此下面不再赘述。若是小伙伴们有所遗忘,还请回头翻看一下。

(1) 如何在mysql里执行或取消执行SQL语句?( 只有输入“完整”,才能被程序正确识别,就像使其有了“可执行”的标识一样 )

① 执行是事前操作:在语句的结尾处添加一个分号(;),并按下Enter键

② 中断执行是事后操作:只能借助shell的功能Ctrl+D键 或 Ctrl+C键进行强制拦截。

但要注意,在mysql中,只能用英文状态下的分号、逗号,否则还没有将其发送至mysqld,就直接先被语法解析器拦截下来了。(因为代码都是字母组合,外国先入为主对吧?)

① 分号( ; )用于语句的分隔。

和我们平时使用句号( 。)的作用一样,标志这语句的结束。只有这样,mysqld才清晰了你此次就想查询这么多的内容,是吧?

② 逗号( , )用于字段的分隔。

和我们平时使用逗号(,)的作用一样,表示这语句尚未说完,后面可添加更多的字段充当内容。

ps:对于上面所言,其实也无需特别记忆,因为后面在查询或是进行其他事务操作,我们都会经常用到。只是不经意间疏忽了而已。

除了分号( ; ),还有另外的终止语句的方法:\g、\G。且它们的用法是相同的——将其放在语句的尾部即可。

① \g 的意思是go。显示查询结果与分号( ; )相同。

② \G 会以“垂直”的方式显示查询结果,每行显示一个值。这在输出结果中,每一行包含的列数较多时尤为有用,因为受限于显示器界面的大小。缺点是不好与其他行的数据进行比较。

(2)如何在mysql里清除那些已输入了的语句?(应当注意,清除执行语句与取消执行语句的区别,您输入语句但尚未按下回车才属于前者。一旦按下回车,由于服务器响应迅速,这意味后续只能使用shell的功能Ctrl+D或Ctrl+C来对其进行取消了)

① 使用Backspace键进行回退(不通用)。但这个方法有很大的局限性,因为只有当你输入一行时尚可如此做,当输入了多行,就只能清除最下面的一行。ps:输入多行时,除了第一行的提示符为mysql> ,其他行都是-> 。

② 使用 \c 取消语句的执行(通用)。\c的意思是cancel。

(3) 实战演练:

① 使用分号( ; )和 \G作为语句的结束标志。至于\g,请读者自行尝试。

8766505e320eab0aa1292ad267849aed.png

②同一行中可以置放多个语句,使用分号( ; )隔开。想不通为什么这样做可行,就联想下中文句号在同一行中是否可以使用多次即可。

c06cf4c3ca2f49ada6c887efbb1ec66c.png

ps:与创建选项文件一样,多个语句可以被存储在一个SQL脚本中,之后再利用shell的重定向功能就能执行脚本里面的语句了。在这先卖个关子,用到之时再做讲解。

(4)记不住那么多怎么办?答曰:学会观察!且看到下面第一行和最后一行那“赤裸裸的提示”:

21077e1cbdc4ed7d93de09e24c2991df.png

小结:

每次执行语句,都是一次事务提交——mysql向mysqld发起了一次请求,告知要对数据库文件进行什么操作。(具体什么是事务,后面学到自会讲解。若受好奇心驱使,还请“摆渡”)

从连接服务器,到与mysql进行交互,这个过程无异于我们使用电脑浏览器查询相关信息。其中,浏览器是电脑客户端的一个代理,通过搜索引擎等一些手段可以向存储相关网页的服务器发起查询。

(三)在连接MySQL上“偷懒”(选读)

由于每次连接MySQL都需要使用相似的连接参数,如何减少重复性劳作就显得相当重要了。

(1)将常用的连接参数事先存储在主目录的一个选项文件里,据此轻松连接。

I. 如何实现:

① 首先,需要创建一个配置文件。比如利用快捷键Ctrl + Alt + T打开命令行界面,并使用vi工具进行这一步骤:

vi ~/.my.cnf

② 其次,需要在配置文件中输入好如下相关信息。按照上面的步骤,则此处应按下i键开启插入模式,并将下述的主机名、用户名、密码这几个占位符替换为你自己的:

[client]

host=主机名

user=用户名

password=密码

额外说明:选项文件中的[client]是一个选项组。它作为选项组的开始标记,表示该组名后面的所有选项都适用于所有的客户端程序。

其他选项参数可根据需要增减。比如是要连接到本地运行的mysqld服务器,则无需加入host=主机名这个参数。get到了吗?

③ 接着,保存并退出文件编辑界面——先按下:,再输入 wq。

④ 最后,将文件权限设定为仅自己可读写。

chmod 600 ~/.my.cnf

II. 如何测试:

如果你按照上面操作,那么之后在命令行界面键入mysql可直接进入会话界面的话,说明设置有效!

(2)利用shell的history命令功能,输入重复命令。

这里需要用到的命令是:感叹号字符(! ),如  !my  或  !# 均可以。

①如果使用是!#,#需要您使用数字来进行替换。但您可能需要先通过history可以查询到是第几个命令。

② 如果使用!my,要确保以“my”这两个字符足够使得shell找到以my开头的命令,我们的目标是最近调用mysql这行命令。

③ 若为上一个命令,可直接键入!!。

(3)利用shell别名或脚本定义一个mysql命令行快捷方式。

I. 别名:

这里需要用到的命令是:alias ,如alias='mysql -h主机名 -p -u用户名'。请注意alias为内建命令,因此只在当前的shell进程生效。要使其永久生效,还需将它配置到shell程序的启动文件里。若读者账户的默认sh为bash,那么就是.bashrc或.bash_profile文件了。(这里不做过多描述,感兴趣的小伙伴可以自行“摆渡”一下)

II. 脚本:

① 首先,使用vi工具创建一个以.sh为后缀的文件。这里将文件名命名为要打开的数据库的名称。

vi 数据库名.sh

② 其次,按下i键,并输入如下内容(注意将主机名、用户名、数据库名换成你自己的):

#! /bin/bash

exec mysql-h 主机名 -p -u 用户名 数据库名

③ 最后,将文件设置为可执行文件。

chmod +x 数据库名.sh

在命令行中输入该文件名称(注意:需要切换到文件所在目录),即可启动mysql并连接到相关的数据库了。大功告成!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30145205/article/details/113264415

智能推荐

EAX、ECX、EDX、EBX寄存器的作用(转)-程序员宅基地

文章浏览阅读80次。一般寄存器:AX、BX、CX、DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器索引暂存器:SI、DISI:来源索引暂存器,DI:目的索引暂存器堆叠、基底暂存器:SP、BPSP:堆叠指标暂存器,BP:基底指标暂存器EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元ESI、EDI、ESP、EBP:為si,di,sp,bp的延伸,32位元eax, eb..._%esp, %ebp eax ebx

图的深度优先遍历课后补分博客-程序员宅基地

文章浏览阅读95次。图的深度优先遍历题目要求:对给出的附图进行分析,写出附从每个顶点出发的一次深度优先搜索遍历序列。附图:题目解析首先需要了解图的深度优先遍历,简单介绍深度优先遍历的定义和实现方法,首先是定义:假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w..._写出该图从结点1出发的深度优先遍历序列

collection集合总结_集合collection下面集合类特点总结-程序员宅基地

文章浏览阅读145次。Collectionlist 有序 带索引,通过索引就能够精确查找元素,元素 可以重复增加:add(element) add(index,element):方便摘要删除:remove(element) remove(index)修改:set(index.element)查询:get(index)|-Vector 也是一个可增长的数组结构,同步的,查询速度慢,增删速度更慢|--Ar..._集合collection下面集合类特点总结

Android端图像处理方法总结_图像处理安卓-程序员宅基地

文章浏览阅读6.7k次。Android端图像处理方法在Android机中进行图像处理,常用的方式有两种: 一种是单纯使用JAVA语言进行图形处理,相当于你将C或者C++编写的图像处理方法,又重新用JAVA编写了一遍。这种开发方法需要你在opencv官网,首先下载好Opencv的Android的版本,然后将它配置到你的项目中,这样你进行图像处理时就可以直接调用一些现成的方法,比如灰度化、边缘化处理、图..._图像处理安卓

JDK 11 最新 JEP 提案:计划支持 TLS 1.3-程序员宅基地

文章浏览阅读183次。(点击上方公众号,可快速关注)转自:开源中国JDK 11 最近有什么消息?我们不妨来看一下它的进展情况,包括最新的 JEP 提案。Java 的新版本发布计划意味着总会有一..._tls1.3需要jdk

<二>Material主题的使用_material这个主题-程序员宅基地

文章浏览阅读1.2k次。http://developer.android.com/training/material/theme.htmlMaterial主题带来的效果体现在以下几个方面:System widgets that let you set their color palette(调色板)系统控件(部件)的触屏反馈动画Activity跳转动画可以在app中对color palet_material这个主题

随便推点

一人一猫旅行记之Intent传递数据原理_怎么确定intent里被put了哪些数学-程序员宅基地

文章浏览阅读1.8k次。安卓提供了Intent机制来实现应用间的通信,可以在Activity之间、Service、BroadCast中传递数据。提起Intent,我们最熟悉的可能就是在启动Activity的时候携带数据,使用非常简单:Intent intent = new Intent(MainActivity.this,SecondActivity.class);intent.putExtra("param1","我是参数1");startActivity(intent);在新的Activity,也就是Activity_怎么确定intent里被put了哪些数学

浙大数据结构习题笔记:04-树4 是否同一棵二叉搜索树(25 分)_04-二叉搜索树1 是否同一棵二叉搜索树 (20 分) 给定一个插入序列就可以唯一确定一-程序员宅基地

文章浏览阅读930次。04-树4 是否同一棵二叉搜索树(25 分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后_04-二叉搜索树1 是否同一棵二叉搜索树 (20 分) 给定一个插入序列就可以唯一确定一

Josh 的复习总结之数字信号处理(Part 5——部分 FFT 蝶形图)_fft蝶形图-程序员宅基地

文章浏览阅读8.2k次,点赞14次,收藏82次。本文主要总结了常用的 4 点、8 点和 16 点FFT的蝶形图的画法。对于 4 点 FFT,包含了基-2 按频时间/频率抽取、分裂基-2/4 按频率抽取、基-4 按频率抽取的蝶形图的画法;对于 8 点 FFT,包含了基-2 按频时间/频率抽取、分裂基-2/4 按频率抽取的蝶形图的画法;对于 16 点 FFT,包含了基-2 按频时间/频率抽取、分裂基-2/4 按时间/频率抽取、基-4 按频率抽取的蝶形图的画法。_fft蝶形图

Cookie Domain设置错误引发的单点登录死循环问题_document.cookie设置domain不生效-程序员宅基地

文章浏览阅读1k次。问题现象在业务系统B登录之后,打开B系统的一个内嵌iframe页面page1,page1需要访问业务系统A/create接口,屏幕出现一片白色,跟踪chrome network发现请求截图如下:可以发现,浏览器在不断的访问A/create接口,然后访问passport/serviceLogin接口,然后访问A/sts接口,然后再次访问A/create,再次访问passport/serviceLogin,再次访问A/sts,陷入死循环.单点登录流程图上方流程图是梳理了单点登录代码拦截器_document.cookie设置domain不生效

原子类compareAndSet方法-程序员宅基地

文章浏览阅读755次。compareAndSet() returns true if the current value equals the expected value v, and thus the value was updated to v + 1.In your first version, if both threads get the same initial value then one will ..._compareandset 原子

session 超时的时间设置-程序员宅基地

文章浏览阅读394次。为单个Web应用 配置超时时间可以在web.xml中使用元素,如[xhtml] view plaincopy 15 ... 这个时候的“15”单位是分钟!如果在配置Servlet是指定初始化参数决定超时时间,例如下:[xhtml] view plainc..._securecart session 超时时间

推荐文章

热门文章

相关标签