多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
我最初是一个Oracle DBA,在初用MySQL的时候感觉很奇怪,提出了下面三个问题: * 为什么这个数据库的关闭方式如此简单? * 为什么这个数据库的启动方式也是如此简单? * 为什么这个数据库的用户竟然如此复杂? 下面的内容里,我们就要着重学习一下,以解答我的三个问题。 首先说说MySQL的关闭方式。再说关闭方式之前,来回忆一下之前我们是如何启动MySQL的: ```bash mysqld --user=mysql --datadir=/data/mysql ``` 这是以命令的方式开启的数据库服务,另外还可以将其注册到系统的服务中,用服务的方式启动。这相比Oracle来说简单了很多,很像是一般的应用程序的启动。对于大部分的程序员来说,这都是很容易理解和学会的方式。 Oracle相对来说就要复杂很多,要启动监听,要启动数据库,数据库的启动还分为NOMOUNT,MOUNT和OPEN三个阶段。 MySQL的关闭方式也很简单,可以像Oracle一样,在客户端中直接输入shutdown命令关闭数据库: ```bash mysql -uroot -p -e "shutdown" ``` 另外MySQL还提供了一个工具mysqladmin,也可以用来关闭数据库: ```bash mysqladmin -uroot -p shutdown ``` MySQL比较让初学者困惑的是其连接方式,这又是一个很重要的概念,首先我们看看一个输出: ![](https://box.kancloud.cn/9ad53866fd44f9fe2c7108411c7d2b5c_960x331.png) 注意红色框中的内容,它说明了我们的这个连接,是通过Unix socket的方式连上Server的。 再看一张图: ![](https://box.kancloud.cn/fc7b418c10ee2c00bd007b9516d12bce_973x342.png) 可以看出这个连接是通过TCP/IP方式连上Server的。 因此可以引出两种主流的MySQL连接方式即Unix socket连接和TCP/IP连接。事实上还有别的方式,但是这两种方式已经涵盖了大部分的应用,只需要关注这两种方式即可。 我之前说过MySQL的用户管理对于初学MySQL的我来说比较复杂,这是和其连接方式息息相关的。这两个用户,竟然不是一个用户:"root@localhost"和“root@192.168.150.129”。 如何理解呢?先说一个名字:罗宾-范-佩西,这是曾经阿森纳和曼联的球星,荷兰人。这个名字是什么意思呢?很有意思的是荷兰人似乎都姓范。其实这个名字的意思是“来自佩西的罗宾”。范是荷兰语中from的意思,同理,“路德维希-冯-贝多芬”的本意是“来自贝多芬的路德维希”,这里“冯”是德语中的from的意思。 现在再看看上面那两个用户,就很简单了,第一个是来自localhost的root,第二个是来自192.168.150.129的root,这两个用户只不过是名字一样,但是确实不是一个用户。 前者用socket方式连接,后者用TCP/IP连接。 如果对球星和音乐家不感兴趣,那么这里在多举一个例子,我们看三国的时候,赵云最喜欢吼得一句话是:“我乃常山赵子龙”。是的,赵子龙可以有很多个,但是常山赵子龙和洛阳赵子龙确实不是一个人。