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。  其实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的一些默认信息。即“[root@yinzhengjie ~]# mysql --help --verbose ”没错,通过这个命令我们就可以或得很多输出:
  A>.显示mysqld程序启动时可用的选项,通常都是长选项;
  B>.显示mysqld的配置文件中可用的服务变量;
  C>.显示使用配置文件的方式,即:第一,它依次查找每个需要查找的文件,结果是所有文件并集;第二,如果某参数在多个文件中出现多次,后读取的最终生效。
 
2.重置用户信息
  大家知道在一个新安装的服务器上有很多默认的用户,比如root以及一些匿名用户,他们都是没有密码的,这样是很不安全的,因此我们需要删除不必要的用户,以及给我们需要使用的用户设置密码以及授权操作。 我们知道MySQL用户名账号由两部分组成,即用户名和主机名(username@host),其中“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 username@host = password( 'your_password');
3 第二种方法
4   mysql > update user set password = password('your_password') where user = 'root';
5   mysql > flush peivileges;
6 第三种方式:
7 [root@yinzhengjie ~]#mysqladmin -u UserName -h Host password 'new_password' -p
8 [root@yinzhengjie ~]#mysqladmin -u UserName -h Host -p flush-privileges
 

相关内容推荐