MariaDB一之编译安装MariaDB、MariaDB初始化及MariaDB的图形化工具

  1. 云栖社区>
  2. 博客>
  3. 正文

MariaDB一之编译安装MariaDB、MariaDB初始化及MariaDB的图形化工具

科技小先锋 2017-11-15 16:22:00 浏览1412
展开阅读全文

  本文主要讲述MariaDB的源码编译,MariaDB的初始化及MariaDB的图形化工具,由于mysql以后可能会闭源,本处使用MariaDB,MariaDB与mysql基本操作一样

   关系型数据库基础

   程序=指令+数据

     数据结构:变量、数组

   I/O

     用来提供数据,保存数据,

   数据的来源:

     文件,交互式输入

   如果想长期保存数据,应该把数据保存在持久存储中

   所有文件中保存的内容都是字符

   使用文件保存的缺点:

      数据冗余和不一致型

      数据访问困难

      数据孤立

      完整性问题

      原子性问题

      并发访问异常

      安全性问题

   数据库分为

      层次型

      网状型

      关系型

      对象-关系型

   数据库语言分为

       DDL:create drop alter

       DML: select insert update delete

       DCL: grant revoke  

   事务:必须满足ACID规则,其中

      A:原子性

      C:一致性

      I:隔离性

      D:持久性

   隔离级别:

      读未提交: read uncommoitted

      读提交:read committed

      可重读:repeatable  read

      串行化:serializable

   MariaDB的存储引擎主要有以下两种:

      MyISAM:无事务,非聚集的

      InnoDB:事务性,聚集索引

   机械式硬盘分为

      随机读写

      顺序读写

   日志文件为欸连续存储空间

      事务日志:顺序I/O

      历史日志:

   RDBMS设计范式

   设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

   目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

   (1) 第一范式(1NF)

   所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。

   说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。

   (2) 第二范式(2NF)

   第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。

   第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。

   (3) 第三范式(3NF)

   第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

   sql的规范是有ANSI公司定义的,分为sql-86,sql-89,sql-92,sql-99,sql-03

   关系数据库的约束分为:主键约束,外键约束,唯一键约束,条件约束,非空约束

   DBA的分类以及主要职责

      开发:

          数据库设计

          代码设计:存储过程、存储函数、触发器

      管理:

          连接管理及优化

          备份及还原

          数据库的设计

          基本语句的优化

          用户及权限管理

          安全管理

          数据库软件安装及升级

          配置优化

     高性能(Speed)

       完全多线程

       查询缓存

    稳定性(Reliability)

    伸缩性(Scalabiliy)

    可用性(Ease of use)

    可移植和兼容性 (Portability and Standards Conpliance)

    多用户

    国际化

    众多开发语言

    开源

    mysql的组件分为


wKioL1NFeOCBCtmpAAFFShedCFM388.jpg

     mysql的产品家族

        Mysql server

        mysql cluster(集群)

        mysql proxy (语句路由)

        mysql adminitrator (管理工具)

        mysql query browser (查询浏览器)

        mysql workbench

        mysql migration toolkit (移植工具箱)

        mysql Embedded sever (嵌入式环境中的)

        mysql drivers and connectors (驱动和连接器)

    mysql的安装方式分为

        源码编译:

        rpm包

         os verdor

         mysql

        通用二进制格式

      本处之讲述源码编译,关于rpm和通用二进制安装方式请移步本人相关博客,谢谢

      由于mysql是基于cmake编译的,所以要先安装cmake    

1
[root@bogon ~]# yum install cmake -y

    1、使用cmake编译MariaDB-5.5

       cmake指定编译选项的方式不同于make,其实现方式对比如下:

       ./configure           cmake .

       ./configure --help    cmake . -LH or ccmake .

       指定安装文件的安装路径时常用的选项:

       -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

       -DMYSQL_DATADIR=/data/mysql

       -DSYSCONFDIR=/etc

       默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:

       -DWITH_INNOBASE_STORAGE_ENGINE=1

       -DWITH_ARCHIVE_STORAGE_ENGINE=1

       -DWITH_BLACKHOLE_STORAGE_ENGINE=1

       -DWITH_FEDERATED_STORAGE_ENGINE=1

       若要明确指定不编译某存储引擎,可以使用类似如下的选项:

       -DWITHOUT_<ENGINE>_STORAGE_ENGINE=1

       比如:

       -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1

       -DWITHOUT_FEDERATED_STORAGE_ENGINE=1

       -DWITHOUT_PARTITION_STORAGE_ENGINE=1

       如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:

       -DWITH_READLINE=1

       -DWITH_SSL=system

       -DWITH_ZLIB=system

       -DWITH_LIBWRAP=0

       其它常用的选项:

       -DMYSQL_TCP_PORT=3306

       -DMYSQL_UNIX_ADDR=/tmp/mysql.sock

       -DENABLED_LOCAL_INFILE=1

       -DEXTRA_CHARSETS=all

       -DDEFAULT_CHARSET=utf8

       -DDEFAULT_COLLATION=utf8_general_ci

       -DWITH_DEBUG=0

       -DENABLE_PROFILING=1

       如果想清理此前的编译所生成的文件,则需要使用如下命令:

       make clean

       rm CMakeCache.txt

    2.编译安装  

1
2
3
4
5
[root@bogon ~]#  groupadd -r mysql
[root@bogon ~]# mkdir -p /mydata/data
[root@bogon ~]#  useradd -g mysql -r -s /sbin/nologin mysql
[root@bogon ~]#  tar xf mariadb-5.5.36.tar.gz
[root@bogon ~]#  cd mariadb-5.5.36/

切记:如果之前编译有错误,需要重新编译,请删除CMakeCache.txt

1
[root@bogon mariadb-5.5.36]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data/ -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
1
[root@bogon mariadb-5.5.36]# make && make install

    初始化数据库

1
2
3
[root@bogon mysql]# cd /usr/local/mysql/
[root@bogon mysql]# chown mysql.root * -R
root@bogon scripts]# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

   修改环境变量、帮助文档、库文件、头文件等文件

  初始化

第一步:提供配置文件

     配置文件.cnf

     集中式的配置文件

     [mysqld]

     [mysqld_safe]

     [client]

1
[root@bogon mysql]# cp support-files/my-large.cnf /etc/my.cnf
1
2
3
修改cp过去的文件
thread_concurrency = 2
datadir=/mydata/data

    使用配置文件的方式

     可以通过以下命令查看

1
2
3
[root@bogon mysql]# mysqld --help --verbose |head -20
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

    1.它依次查找多个需要查找的文件,结果是所有文件的交集

    2.如果某个参数在多个文件中出现多次,后配置的最终生效

   # mysqld --help --verbose 可以查看可以修改的文件

    1.显示MariaDB的程序启动时可用的选项,通常都是长格式选项

    2.显示MariaDB配置文件中可用的服务变量

     准备启动脚本

1
2
3
4
[root@bogon mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@bogon mysql]# vi /etc/init.d/mysqld
[root@bogon mysql]# chkconfig --add mysqld
[root@bogon mysql]# chkconfig mysqld on

    启动MariaDB,并登陆

wKioL1NFjVyQQjG3AAF4zMGVKQo340.jpg

     登陆成功,可以看到我们现在使用的为MariaDB  

     可以用以下命令查看当前数据库的全局变量和会话变量

1
2
MariaDB [(none)]> show global variables\G;
MariaDB [(none)]> show session variables\G;

第二步:

     1.删除所有匿名用户

1
2
3
4
MariaDB [mysql]> drop user ''@'localhost';
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> drop user ''@'bogon';
Query OK, 0 rows affected (0.00 sec)

      用户名账号由两部分组成username@host

       host还可以使用通配符

        %:任意长度的任意字符

        _: 匹配任意单个字符

     2.给所有的root用户设定密码

1
2
3
4
5
6
7
8
9
10
第一种方法
MariaDB [mysql]> set password for 'root'@'localhost' =password('wangfeng7399');
Query OK, 0 rows affected (0.00 sec)
第二张方法
MariaDB [mysql]> update user set password=password('wangfeng7399')where user='root' and host='127.0.0.1';
Query OK, 1 row affected (0.07 sec)
Rows matched: 1  Changed: 1  Warnings: 0
  第三种方式
     mysqladmin -u UserName -h Host password 'new_password' -p
     mysqladmin -u UserName -h Host -p flush-privileges

   mysql接受连接请求

     本地通信:客户端与服务器端位于同一主机,而且还要基于127.0.0.1(localhost)地址或lo接口进行通信

       Linux OR Unix:Unix Sock,/tmp/mysql.scok,/var/lib/mysql/mysql.sock

       Widows:memory pipe

     远程通信:客户端与服务器位于不同的主机,或在统一主机便使用非回环地址通信

       TCP Socket

   客户端工具:mysql,mysqladmin,mysqldump,mysqlcheck

      [client]

      通信的选项:

        -u,--user=

        -h, --host=

        -p, --password=

        --protocol={tcp|socket|memory|pipe}

        --port=

        --socket=/tmp/mysql.sock


   mysql监听的端口:3306/tcp


   非客户端类的管理工具:myisamchk,myisampack


  mysql:

   交互式模式

      MariaDB [(none)]>

   脚本模式

      MariaDB [(none)] < /path/to/mysql_scripy.sql


  mysql交互式模式:

     客户端命令

       MariaDB [(none)]> help

       MariaDB [(none)]>\?

       \c:取消命令的执行

       \g

       \G

       \q

       \!

       \s

       \. /path/to/mysql_script.mysql


   批处理执行mysql命令

       \# 命令补全

   服务器端命令:需要命令结束符,默认为分号(;)

    MariaDB [(none)]> help关键字

    help contents 获取整体列表

    MariaDB [(none)]> help keyword

   获取命令帮助

    [root@bogon mysql]# mysql --help

   MariaDB 命令行选项

     --compress 压缩传输

     --default-character-set 字符集

     -V: 显示版本号

     -v: 显示详细信息

     --ssl-ca  ca证书

     --ssl-capath ca证书的文件夹

     --ssl-cert 客户端证书

     --ssl-cipher 加密类别

     --ssl-key 使用的私钥

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

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

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

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

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

    MariaDB命令提示符

    MariaDB [(none)] 等待输入命令

      '> 前面提供的‘未提供结束’

     ”>

     `>

     —> 续航符

     /*> 注释信息


  MariaDB的命令行编辑快捷键

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

   ctrl+u:删除光标之前至行首的所有内容

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

   ctrl+a:移动光标至行首

   ctrl+e:移动光标至行尾

  mysqladmin工具

     mysqladmin [options] command [arg] [command[arg]] .....

    command

    create DB_Name 创建空数据库

    -e:直接返回

    drop DB_Name 删除数据库

    debug 打开调试日志并记录与error_log中

    status:输出简要状态信息

       -sleep # 指定显示延迟

       -count # 指定批次

    extended-status:输出MariaDB的各状态变量及数值,相当于执行“MariaDB [(none)]> show global status”

    flush-hosts:清空主机相关的缓存:DNS解析缓存,此前因为连接错误次数过多而被拒绝访问mysqld的主机列表

    flush-logs:日志滚动,主要是二进制日志和中继日志

    refresh:相当于同时使用flush-logs和flush-hosts

    flush-privileges:通知服务器重读授权表

    reload:重载授权表

    flush-status:重置状态变量的值

    flush-tables:关闭当前打开的表文件句柄

    flush-threads:清空线程缓存

    kill:杀死指定的线程,可以一次杀死多个线程,以逗号分隔,但不能有多余空格

    password:修改指定用户的密码

    processlist: 线程列表

    shutdown:关闭mysqld进程

    start-slave 启动从服务器进程

    stop-slave 关闭从服务器进程

    variables:显示mysql的各服务器进程


GUI客户端工具

     Navicat for mysql

     Toad for mysql

     SQLyog

     MySQL Front

     phpMyAdmin



本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1393146,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
科技小先锋
+ 关注