1.Mariadb的介绍

 

     MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQLInnoDBMariaDBMySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

      MariaDB基于事务的Maria存储引擎,替换了MySQLMyISAM存储引擎,它使用了PerconaXtraDBInnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) FederatedX存储引擎。

 

      MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的:

1、数据和表定义文件(.frm)是二进制兼容的

2、所有客户端API、协议和结构都是完全一致的

3、所有文件名、二进制、路径、端口等都是一致的

4、所有的MySQL连接器,比如PHPPerlPythonJava.NETMyODBCRuby以及MySQL C connector等在MariaDB中都保持不变

5mysql-client包在MariaDB服务器中也能够正常运行

6、共享的客户端库与MySQL也是二进制兼容的

也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行。

 

Mariadb数据库(mysql的一个分支)

 

mysql   oracle   mysql   redis  memcached

 

mysql ——> sun——>oracle

 

2.安装软件

 

 

 

 

wKiom1g-geGiAD4dAAGh8raiz6s720.png-wh_50 

 

 

 

 

wKioL1g-ge3SjyjhAAF9Rt_4c_o753.png-wh_50 

 

wKiom1g-gffB7LeCAAGncvV6IGc898.png-wh_50 

 

一定到把skip-networking=1写到mysqld的语句块里面。意义是关闭数据库的网络连接。

netstatgrep不到端口号了。此时只允许通过套接字文件进行本地连接,阻断所有来自网络的tcp/ip连接

 

3.数据库的用户验证

 

wKioL1g-ggChWIBbAADZ8P_l89E832.png-wh_50 

 

刚才直接在命令行输入mysql就能连接到数据库,这是不安全的。解决方法

 

 mysql_secure_installation

Enter current password for root (enter for none):   ####输入数据库密码,由于没有设置密码,直接回车

Set root password? [Y/n]                        #####是否设置root密码,输入与y并回车或者直接回车

New password:                                 #####设置root用户的密码

Re-enter new password:                         #####再次输入你设置的密码

Remove anonymous users? [Y/n]                 是否删除匿名用户,生产环境建议删除,直接回车

Disallow root login remotely? [Y/n]                是否禁止root远程登陆,根据在及需求设置

Remove test database and access to it? [Y/n]      是否删除test数据库,直接回车

Reload privilege tables now? [Y/n]                 是否重新加载权限表,直接回车

 

现在直接mysql出现报错

wKiom1g-ggqheAh6AAA7uH-gAlg075.png-wh_50 

 

只有输入密码才能登陆

 

wKioL1g-ghOgn2iLAACu6LdsRxM967.png-wh_50 

 

4.简单的SQL语句

 

show databases;         显示数据库

use mysql;            进入数据库

show tables;            显示数据库中的表

desc user;              查看user表的数据结构

flush privileges;             刷新数据库信息

select host.user,password from user;查询user表中的hostuserpassword字段

 

create database westos;    创建westos数据库

use westos;

create table linux(             创建表,usernamepassword字段

username varchar(15) not null,

password varchar(15) not null

);

select * from mysql.user;         查询mysql库下的user表中的所有

alter table linux add age varchar(4);      添加age字段到linux表中

ALTER TABLE linux DROP age         删除age字段

ALTER TABLE linux ADD age  VARCHAR(5)  AFTER namename字段后添加字段age

show tables;

desc linux;

 

insert into linux values ('user1','passwd1');         linux表中插入值为username = user1password = password1

update linux set password=password('passwd2') where username=user1;  更新linux表中user1 的密码为password2

delete from linux where username=user1;删除linux表中user1的所有内容

 

 

grant select on  *.* to user1@localhost identified by 'passwd1';授权user1 密码为passwd1  并且只能在本地 查询数据库的所有内容

grant all on mysql.* to user2@'%' identified by 'passwd2';授权user2 密码为passwd2  可以从远程任意主机登录mysql 并且可以对mysql数据库任意操作

 

创建用户

CREATE USER wxh@localhost identified by 'westos';

CREATE USER lee@'%' identified by 'redhat';

用户授权

GRANT INSERT,UPDATE,DELETE,SELECT on mariadb.* to wxh@localhost;

GRANT SELECT on mariadb.*  to lee@'%';

重载授权表

FLUSH PRIVILEGES;

查看用户授权

SHOW GRANTS FOR wxh@localhost;

撤销用户权限

REVOKE DELETE,UPDATE,INSERT on mariadb.* from wxh@localhost;

删除用户

DROP USER wxh@localhost;

 

 

5.密码恢复

 

关掉服务,跳过grant-tables授权表  不需要认证登录本地mysql数据库

wKioL1g-gh_iGOd8AACzPDy_aAI870.png-wh_50 

 

更新mysql.user 表中条件为root用户的密码为加密码为redhat

wKioL1g-giuBaZLtAAGxTgTJdrc314.png-wh_50 

 

结束进程,重启服务,登陆验证是否成功

 

wKioL1g-gjqRoci1AAFhcWHxZAU575.png-wh_50 

 

 

wKiom1g-gkqybVVOAAE93nUtDp0051.png-wh_50 

 

6.数据备份与恢复


mysqldump -uroot -predhat westos `> westos.sql   备份数据库

 

 

显示数据库

wKioL1g-glryajx_AABZMlJEbWY515.png-wh_50 

显示表中的内容

wKioL1g-gmaw5JgJAABdJ1XFgi4196.png-wh_50 

 

删除westos

 

wKioL1g-gnKARH-KAADB28op_Dc372.png-wh_50 

 

创建一个westos库,并把/mnt/westos.sql库文件倒入到westos库中

 

wKiom1g-gnvTSkOsAACPSMw1Rpk210.png-wh_50 

 

此时显示数据库,发现westos库回来了

wKioL1g-goeSuVdQAAB9gQ1mqzA192.png-wh_50 

 

 

此时显示westos库中的linux表,发现表中的内容也恢复了wKioL1g-gpGQEIyoAAB7muMTb48608.png-wh_50

 

此时数据恢复工作完成

备份

# mysqldump -uroot -predhat westos > westos.dump

# mysqldump -uroot -predhat --all-databases > backup.dump

# mysqldump -uroot -predhat --no-data westos > westos.dump

恢复

# mysqladmin -uroot -predhat create db2

# mysql -uroot -predhat db2 < westos.dump

 

7.图形管理数据库

 

yum install  httpd  php  php-mysql.x86_64  -y     ###安装软件

 systemctl start httpd                            ###打开httpd

 systemctl stop firewalld.service                   ###关闭火墙

下载一个安装包(可以在网上下,我是从老师的250上面下载的)

phpMyAdmin-3.4.0-all-languages.tar.bz2

 mv phpMyAdmin-3.4.0-all-languages.tar.bz2  /var/www/html/  ###将下载的包放到http的默认发布目录

cd /var/www/html/                     

tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2    ###解压安装包

 rm -fr phpMyAdmin-3.4.0-all-languages.tar.bz2    删除安装包

mv phpMyAdmin-3.4.0-all-languages myadmin    将解压的目录换个见到的名字

 

cd myadmin/

 

cp -p config.sample.inc.php config.inc.php

vim config.inc.php

wKiom1g-gpyD1kFDAADcG0FVBUo953.png-wh_50 

重启httpd服务

systemctl   restart  httpd

systemctl start mariadb      ###打开数据库

访问myadmin

wKioL1g-gquTkSJmAAEbsK-iI8Q442.png-wh_50 

 

创建一个数据库(库名hello

wKiom1g-grbDCwKhAAGZVbj7rkU614.png-wh_50 

创建一张表(在hello库中创建一个world表)

 

wKiom1g-gsDxWwhtAADkh3qzP6s929.png-wh_50 

 

wKioL1g-gs6yQtZ1AAFimu2jwOM068.png-wh_50 

保存

查看是否创建成功

wKiom1g-gt2D2lu-AAKW1CyWY4A435.png-wh_50 

 

在表中加入信息

wKioL1g-gunzb7b2AAE3WOW86Jo750.png-wh_50 

查看内容是否创建成功

wKiom1g-gvTgO_d5AAFGIufW1hc586.png-wh_50 

 

 

文本查询是否成功(验证)

 

hello

wKioL1g-gwDQk4-SAAC__qasglc734.png-wh_50 

world

wKiom1g-gwzx37hwAACMeOmm1Wo968.png-wh_50 

 

表中的内容

wKiom1g-gxfwjwj_AADMhRZmzVo952.png-wh_50