MySQL初始化以及客户端工具的使用

                      MySQL初始化以及客户端工具的使用

                                            作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.什么是关系型数据库

  关系型数据库通常是把所有的数据都组织成二维关系。之所以称为关系型数据库是因为他把数据组织在一个有字段和记录组成的二维关系表当中。并且在这个关系表之外提供了很多辅助性的工具以完成关系表中的关系的维持及数据访问等功能。

  我们知道如果将数据存储为字符形式的时候有文本对象和二进制大对象。二进制大对象不会直接存储在数据库中,而是放在服务器的某一个路径上,而在数据库存储的知识该数据的指针。比如,存取一张高清壁纸,它不会将这个图片的内容直接写入数据库,而是将这个图片的绝对路径存放在数据库中的某一个字段内。这种关系我们称之为面向对象的关系型数据库。(RDBMS)。而现在很多关系型数据库还支持直接将xml格式的接口进行交互。

二.关系型数据库的分支

  在90年代初,关系型数据库由Sybase,Informix,Oracle三家公司三足鼎立。这三家公司对公司的规划不同,Sybase和Informix的规划都是很有前瞻性的,而Oracle的目标很有精确,就是把它们的产品做好,最后Oracle不断地进行完善,很显然,走到最靠前的当然是Oracle。其中Sybase曾经是和Microsoft公司合作,当时处于某种原因Sybase退出和Microsoft公司的合作,最后Microsoft公司自己研发了SQL Server数据库,Informix公司则被IBM公司收购,现在Informix只是IBM的一个子项目公司,典型的数据库代表就是DB2。

  早期MySQL是ab公司的,最后以10美元卖给了sun公司,不幸的是sun公司被Oracle公司收购了,而Oracle惯用的伎俩就是将竞争对手买下来再打入冷宫。所以在资本主义面前谈理想都是道德主义。sun公司被收购之后,MySQL也就归Oracle公司啦。Oracle和人们预想的一样,虽然在收购的时候承诺了5年之内不下手,但事实上在这期间MySQL以及被蹂躏了无数遍啦。所以像之前谷歌,Facebook等公司也从MySQL软件转向其他软件啦。而且在RHEL7版本的默认数据库已经将MySQL换成了MariaDB。

  MySQL的原作者在sum公司被收购之后久另立门户了,在早起的MySQL的基础上提出了另外的一个分支叫MariaDB。事实上MariaDB在能够兼容mysql的基础上还整合了开源社区中的很强大的技术力量。我们知道mysql早起整合进来的存储引擎有一个是innodb,而innodb是属于innobase公司的,innobase公司早在2008年被Oracle收购啦。有幸的是在开源界总是不乏奇人的,比如说著名的percona公司,它是致力于mysql的优化方面已经取得了不菲成绩的一个组织,这个组织在早起的改进开源的innodb基础之上研发了增强版的innodb,命名为xtradb。如你所料,MariaDB的存储引擎就是用的xtradb。我们可以理解为MariaDB是MySQL进化之后的一个产品。google和Facebook等著名的世界互联网公司都很看好MariaDB并已经开始使用该软件啦。

  其实google和Facebook还有其他的几家公司在早起的MySQL的技术理念的不同他们也开发了另一个互联网产品叫做webscaledb,专门为web而生的一个数据库系统。它柔和了MySQL,MariaDB,percona和innobase四家公司的技术的产品。

  在开源的数据库产品中还有一个重要的产品叫做PostgreSQL(简称pgsql),事实上,早起名字叫做egresql,只是egresql在商业运作上跟Oracle竞争时完全败下阵来。以至于它销声匿迹的比Informix还要早。而事实上就关系型数据库来讲,pgsql在技术上要优秀的多。不过市场决定一切,因此MySQL可能是大家接触比较多的关系型数据库。

  指定一提的另外一个关系型数据库叫做sqlite,它和mysql不一样,我们知道mysql是基于c/s架构,客户端和服务端是通过mysql协议进行通信的。而sqlite是一个简单,工作在本地,非服务化的一个API的关系型数据库接口(它的客户端和服务端是一体的)。注意,sqlite仅是一个引擎,sqlite主要用在嵌入式平台上又不得不用关系型数据库接口的这样的应用场景。再次强调一下,sqlite是一个非C./S架构,它纯粹是一个引擎API机制,背后的数据任然存储为文件系统上的简单文件,不做过多解析,但完全可以支持我们的程序员使用select,insert等机制对数据完成持久化。

三.MySQL的初始化

  我们知道MySQL的安装方式有很多种,比如rpm,yum,源码安装,二进制方式安装MySQL等等。但是无论哪种方式安装的MySQL我们都需要做一个操作就是MySQL的初始化。而正确的初始化姿势我们分为两个操作。第一,提供配置文件;第二,删除匿名用户等等。

1.提供配置文件

  相比之前接触过MySQL的童鞋都知道,MySQL默认的配置文件都是以“*.cnf”结尾的文件,它是集中式的配置文件,多个应用程序共用的配置文件。当然,也可以不这样玩,后期我会分享案例给大家。我们通过一条命令就可以查看MySQL的一些默认信息。即“[[email protected] ~]# mysql --help --verbose ”没错,通过这个命令我们就可以或得很多输出:

  A>.显示mysqld程序启动时可用的选项,通常都是长选项;

  B>.显示mysqld的配置文件中可用的服务变量;

  C>.显示使用配置文件的方式,即:第一,它依次查找每个需要查找的文件,结果是所有文件并集;第二,如果某参数在多个文件中出现多次,后读取的最终生效。

2.重置用户信息

  大家知道在一个新安装的服务器上有很多默认的用户,比如root以及一些匿名用户,他们都是没有密码的,这样是很不安全的,因此我们需要删除不必要的用户,以及给我们需要使用的用户设置密码以及授权操作。 我们知道MySQL用户名账号由两部分组成,即用户名和主机名([email protected]),其中“host”还可以使用通配符。如 “%”表示任意长度的任意字符,“_”表示匹配任意单个字符。

A.删除匿名用户

 1 mysql> select user,host,password from user;
 2 +-------------+-------------+-------------------------------------------+
 3 | user        | host        | password                                  |
 4 +-------------+-------------+-------------------------------------------+
 5 | root        | localhost   |                                           |
 6 | root        | yinzhengjie |                                           |
 7 | root        | 127.0.0.1   |                                           |
 8 |             | localhost   |                                           |
 9 |             | yinzhengjie |                                           |
10 | yinzhengjie | 10.%.%.%    | *C260A4F79FA905AF65142FFE0B9A14FE0E1519CC |
11 +-------------+-------------+-------------------------------------------+
12 6 rows in set (0.00 sec)
13
14 mysql>
15 mysql>
16 mysql>
17 mysql>
18 mysql> drop user ""@localhost;
19 Query OK, 0 rows affected (0.01 sec)
20
21 mysql> drop user ""@yinzhengjie;
22 Query OK, 0 rows affected (0.00 sec)
23
24 mysql> select user,host,password from user;
25 +-------------+-------------+-------------------------------------------+
26 | user        | host        | password                                  |
27 +-------------+-------------+-------------------------------------------+
28 | root        | localhost   |                                           |
29 | root        | yinzhengjie |                                           |
30 | root        | 127.0.0.1   |                                           |
31 | yinzhengjie | 10.%.%.%    | *C260A4F79FA905AF65142FFE0B9A14FE0E1519CC |
32 +-------------+-------------+-------------------------------------------+
33 4 rows in set (0.00 sec)
34
35 mysql> 

B.给所有的root用户设置密码

1 第一种方式:
2   mysql > set password for [email protected] = password( ‘your_password‘);
3 第二种方法
4   mysql > update user set password = password(‘your_password‘) where user = ‘root‘;
5   mysql > flush peivileges;
6 第三种方式:
7 [[email protected] ~]#mysqladmin -u UserName -h Hot password ‘new_password‘ -p
8 [[email protected] ~]#mysqladmin -u UserName -h Host -p flush-privileges

四.连入MySQL服务器

1.MySQL协议

  MySQL的客户端有很多种,不论是那种MySQL客户端连接mysqld服务器,都是需要使用mysql protocol协议。

2.MySQL接收连接请求

本地通信:

  客户端与服务器端位于同一主机,而且还要基于127.0.0.1(localhost)地址或lo接口进行通信。Linux或是Unix操作系统则是通过Unix Sock,/tmp/mysql.scok,/var/lib/mysql/mysql.sock这些本地文件进行进程间的通信。Widows则是通过memory(共享内存) pipe(命名管道)的方式进行通信的。

远程通信:

  客户端与服务器位于不同的主机,或在统一主机便使用非回环地址通信。而远程通信时,通常是基于套接字通信,即TCP Socket。

3.MySQL客户端工具

  事实上MySQL的客户端工具有很多种,可不止mysql这一种哟(只不过mysql这个客户端时最著名的一个)。其他著名的客户端工具还有:mysqladmin,mysqldump,mysqlcheck等等。

  客户端([client])通信的选项:

    指定用户 : -u,--user=

    指定主机名 : -h, --host=

    指定密码 : -p, --password=

    指定协议 : --protocol={tcp|socket|memory|pipe}

    指定端口 : --port= #MySQL默认是3306端口

    指定套接字 : --socket= # 例如:/tmp/mysql.sock

  非客户端类的管理工具:myisamchk(监测工具)和myisampack(打包工具)。

4.mysql命令行选项

  压缩传输 : -compress

  字符集 : --default-character-set

  显示版本号 : -V:

  显示详细信息 : -v:

  指定ca证书 : --ssl-ca

  ca证书的文件夹: --ssl-capath (一般有多个CA证书,就可以指定一个目录)

  客户端证书 : --ssl-cert

  加密方式 : --ssl-cipher

  使用的私钥 : --ssl-key

  验证服务器端证书: --ssl-verify-server-cert

  指定要使用的数据库:--database= -D

  输出结果为html格式的文档::-H --html

  输出结果为xml格式的文档: -X --xml:

  发送命令时拒绝使用无where字句的uodate或delete命令: --safe-updates

5.mysql命令提示符

  mysql>      ---->等待输入命令

  ‘>         ---->前面提供的‘未提供结束’,接下来那两行一样的道理。

  ”>

  `>

  —>     ---->续航提示符

  /*>      ---->注释信息(结束就用户"*/",比如:/*yinzhengjie*>)

6.mysql的命令行编辑快捷键

  ctrl+w:删除光标所在处之前的一个单词

  ctrl+u:删除光标之前至行首的所有内容,并将其保存在缓存(buffer)当中。

  ctrl+y:粘贴之前ctrl+w或ctrl+u删除的内容

  ctrl+a:移动光标至行首

  ctrl+e:移动光标至行尾

 五.mysqladmin工具用法详解

  mysqladmin可以让用户不进入mysql的交互界面,直接在命令行就可以运行SQL语句啦。命令格式:“mysqladmin [options] command [arg] [command[arg]] .....”,接下来,让我们一起研究一下mysqladmin的用法。这个命令其实很有用,尤其是你在写shell脚本的时候,操作数据的时候它的用法就可以大展身手了。

1.创建空数据库

 1 [[email protected] ~]# mysqladmin create yinzhengjiedb    #创建一个叫yinzhengjiedb的数据库。
 2 [[email protected] ~]# mysql -e ‘show databases;‘       #我们可以用mysql的-e选项来进行验证是否创建成功、
 3 +--------------------+
 4 | Database           |
 5 +--------------------+
 6 | information_schema |
 7 | mysql              |
 8 | test               |
 9 | yinzhengjie        |
10 | yinzhengjiedb      |
11 +--------------------+
12 [[email protected] ~]# 

2.删除数据库

 1 [[email protected] ~]# mysql -e ‘show databases;‘
 2 +--------------------+
 3 | Database           |
 4 +--------------------+
 5 | information_schema |
 6 | mysql              |
 7 | test               |
 8 | yinzhengjie        |
 9 | yinzhengjiedb      |
10 +--------------------+
11 [[email protected] ~]# mysqladmin drop yinzhengjiedb
12 Dropping the database is potentially a very bad thing to do.
13 Any data stored in the database will be destroyed.
14
15 Do you really want to drop the ‘yinzhengjiedb‘ database [y/N] y   #此处我们需要交互式输入一个y。
16 Database "yinzhengjiedb" dropped
17 [[email protected] ~]# mysql -e ‘show databases;‘
18 +--------------------+
19 | Database           |
20 +--------------------+
21 | information_schema |
22 | mysql              |
23 | test               |
24 | yinzhengjie        |
25 +--------------------+
26 [[email protected] ~]# 
时间: 2024-08-15 05:01:15

MySQL初始化以及客户端工具的使用的相关文章

mysql客户端工具及mysql客户端命令和mysqladmin的使用

mysql客户端工具 常用的mysql客户端工具有这些: mysql:这是一个命令行的客户端工具,在安装mysql服务器时,会自动安装的一个命令行工具. mysqldump:这是用来备份mysql时用到的客户端工具 mysqladmin:这是一个比较常用的mysql客户端管理工具,功能比较强大,后文会介绍 mysqlcheck mysqlimport mysql命令:mysql客户端命令和服务器端命令 在使用账号和密码登入到mysql服务器上时,即出现"mysql>"字样是,表示

mysql 客户端工具参数详解

客户端工具:mysql,mysqladmin,mysqldump,mysqlcheck 非客户端类的管理工具:myisamchk,myisampack mysql命令提示符 mysql> 等待输入命令 '> 前面提供的'未提供结束' "> `> -> 续航符 /*> 注释信息 mysql的命令行编辑快捷键 ctrl+w:删除光标所在处之前的一个单词 ctrl+u:删除光标之前至行首的所有内容 ctrl+y:粘贴之前ctrl+w或ctrl+u删除的内容 ctrl

4个mysql客户端工具的比较

mysql是我以前学习和练习所使用的数据,现在在工作中也在使用,之前公司里用oracle,我在做自己的东西的时候觉得用oracle太不方便,于是就找了mysql(当时也考虑过sqlserver,觉得还是没有mysql小巧),从那时起我就开始接触下面所说的几种mysql客户端工具了. 我接触的mysql客户端工具一共有4个,mysqlfront, sqlyog, mysqlbrowser, ems mysql manager,其中mysqlbrowser是我最早使用的一个mysql客户端工具(一年

mysql客户端工具使用

mysql客户端工具在/usr/local/mysql/bin目录下,常用的客户端有:mysql和mysqladmin mysql命令的工作模式:交互式和脚本式 交互式: 交互式模式分为服务器端命令和客户端命令: 服务器端命令: For server side help, type 'help contents' mysql> help contents You asked for help about help category: "Contents" For more inf

MySQL客户端工具以及常用SQL语句

Mysql客户端工具: 在用yum安装的maiadb-server的时候,在/etc/my.cnf.d下有一个名为client.cnf的文件,编辑此文件,在此文件的[client]下添加用户名和密码就可以不用输入口令登录 vim /etc/my.cnf.d/client.cnf [client] user=root # 登录数据库使用的用户名 password=mysql #登录数据库使用的密码 大部分常用SQL语句 1 创建用户并查看(SQL语句); create user [email pr

as3+java+mysql(mybatis) 数据自动工具(七) - 完结

autoscript packed 文件地址:http://pan.baidu.com/s/1dDvgcO5 如果需要项目源码的话,可以留下邮箱,先声明一下,该工具主要是为了实现自动同步输出代码类文件的功能,所以代码写得并不是很规范什么的,没太大的参考意义,主要还是工具的实用性. 数据类和常量的配置基本就是前面所说明的那些了,现在来说一下怎么执行配置文件.执行配置文件需要写一个批处理文件,格式如下 java -classpath ./lib/*; AutoScript -? 这是一个执行 jav

as3+java+mysql(mybatis) 数据自动工具(五)

现在介绍常量的配置,主要用于客户端(as3)与服务端(java)之间的常量同步,比如错误码.请求标识等 配置格式: <macros name="Macros" groupStart="16" groupEnd="128" bitOffset="20" author="idoublewei" note="宏定义"> <macro name="SEX_MALE&q

mysql mysqldmin 命令行工具 GUI工具

连入MySQL服务器 mysql client <--mysql protocol--> mysqld mysqld接收连接请求: 本地通信:客户端与服务器端位于同一主机,而且还要基于127.0.0.1(localhost)地址或lo接口进行通信: Linux OR Unix: Unix Sock, /tmp/mysql.sock, /var/lib/mysql/mysql.sock Windows: memory, pipe 远程通信:客户端与服务器位于不同的主机,或在同一主机便使用非回环地

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 http://www.cnblogs.com/yubinfeng/p/5182271.html 本篇导读: 上篇介绍了一款Windows环境下的Git服务器工具GitStack ,搭建了最简单的Windows下的Git服务器,需要再次提醒的是