mariadb概述
起源:
MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。Maria是他女儿的名字
-
兼容性:
MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。
-
Mysql出现的问题:
在Oracle控制下的MySQL开发,有两个主要问题:
1. MySQL核心开发团队是封闭的,完全没有Oracle之外的成员参加。很多高手即使有心做贡献,也没办法做到。
2. MySQL新版本的发布速度在Oracle收购Sun之后大为减缓。Widenius有一个ppt,用数据比较了收购之前和之后新版本的发布速度。有很多bugfix和新的feature,都没有及时加入到发布版本之中。
以上这两个问题,导致了各个大公司,都开发了自己定制的MySQL版本,包括Yahoo!/Facebook/Google/阿里巴巴+淘宝网等等。
-
MariaDB的特点:
与 MySQL 相比较,MariaDB 更强的地方在于:
Maria 存储引擎 , PBXT 存储引擎 , XtraDB 存储引擎 , FederatedX 存储引擎 , 更快的复制查询处理 , 线程池 ,更少的警告和bug , 运行速度更快 , 更多的 Extensions (More index parts, new startup options etc) , 更好的功能测试 , 数据表消除 , 慢查询日志的扩展统计, 支持对 Unicode 的排序
-
MySQL是开源社区的资产,主要由开源社区在维护 ,任何个人/组织都无权据为己有。为了依靠广大MySQL社区的力量来更快速的发展MySQL,另外开分支是必须的。
MariaDB默认的存储引擎是Maria,不是MyISAM。Maria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。可以通过以下语句,转换为支持事务的Maria引擎。ALTER TABLE
tablename
ENGINE=MARIA TRANSACTIONAL=1;
mariadb数据库的建立与操作
1、安装mariadb
yum install mariadb-server.x86_64 -y //安装mariadb数据库
systemctl start mariadb //开启数据库
2、数据库安全设置
netstat -antple | grep mysql ##查看端口是否打开
vim /etc/my.cnf //关闭端口
skip-networking=1 //在注释行后添加
systemctl restart mariadb
添加之后,查看端口,已经关闭了
mysql_secure_installation ##设置登陆密码
mysql -uroot -p ##登陆数据库
3、数据库的使用
1> 查询
查看有的库 :
show datebases;
//进入mysql这个库 :
use mysql;
显示数据库里的所有表格 :
show tables;
//查看 user表的结构 :
desc user;
查看一个表格的所有内容, * : 所有字段
select * from user;
查看一个表格中有关键词的部分
select * from user where Host='127.0.0.1';
2> 创建
create database westos;
#创建叫westos的数据库
use westos;
#进入这个数据库
MariaDB [westos]> show tables;
Empty set (0.00 sec)
MariaDB [westos]> create table linux ( ##创建linux表
-> username varchar(50) not null,
-> password varchar(50) not null,
-> age varchar(4) );
Query OK, 0 rows affected (0.33 sec)
//在userinf表格中插入数据
MariaDB [westos]> insert into linux values ('yuan','123','18');
MariaDB [westos]> insert into linux values ('lee','123','20');
MariaDB [westos]> insert into linux values ('li','123','20');
//查看这个表格的内容
MariaDB [westos]> select * from linux;
3> 修改
修改表格linux的名称为message :
alter table linux rename message;
添加属性:
alter table linux add class varchar(50);
删除表格中的class列:
alter table linux drop class;
在password之后添加属性:
alter table linux add class varchar(50) after password;
update linux set class='linux'; ##改class这一列的所有属性
update linux set class='java' where username='lee'; ##改一行中的一个属性
4> 删除
删除username=lee且class=java的行
delete from linux where username='lee' and class='java';
#删除表格linux
drop table linux;
#删除数据库westos
drop database westos;
5> 备份与恢复
mysqldump -uroot -predhat westos > /mnt/westos.sql
#将westos数据库备份到/mnt下
[root@dnst ~]# mysql -uroot -predhat -e "drop database westos"
#删除westos数据库
[root@dnst ~]# mysql -uroot -predhat -e "create database westos"
#建立一个westos数据库
[root@dnst ~]# mysql -uroot -predhat westos < /mnt/westos.sql
#将原westos数据库中的数据导入到新的数据库中
*注: 也可以在文件中上方的读取westos数据库信息之前直接填写 :
CREATE DATABASE
westos;USE westos;
然后直接
[root@dnst ~]# mysql -uroot -predhat < /mnt/westos.sql
就可以直接导入
"但是注意,这里面的文件都是数据库的重要信息,一旦更改出错是有可能造成数据库混乱的的,所以尽量不要去碰这个文件"
6> 忘记密码
//停止mariadb
systemctl stop mariadb
//启动安全模式,且跳过认证表,不启动授权表, & :进程打入后台
mysqld_safe --skip-grant-tables &
此时直接输入命令 mysql //不需要密码直接进入数据库
//进入mysql
use mysql
select * from user;
//发现 其中User,Password都是首字母大写,密码是加密的。
密码部分 :" *84BB5DF4823DA319BBF86C99624479A198E6EEE9 "
//无密码加密修改密码: 修改里面的user
MariaDB [mysql]> update user set Password= 'westos' where User='root';
| root | westos | //这是显示的结果,修改的密码没有加密
//加密密码修改:
MariaDB [mysql]> update user set Password=password('westos') where User='root';
| root | *28C1E2BE21B45562A34B6CC34A19CFAFC2F88F96 | //显示的结果,密码有加密
//查看有关mysql的进程
ps ax | grep mysql
kill -9 mysql的进程
systemctl start mariadb //重启数据库,生效
7> 用户和访问权限
创建一个yuan用户,只能从本机登陆,登陆密码为westos
create user yuan@localhost identified by 'westos';
创建一个yuan用户,可以从任何地方登陆,登陆密码为westos
create user yuan@'%' identified by 'westos'; ## '%' : 任何地方登陆
对yuan用户授权:
grant insert,update,delete,select,drop on westos.* to yuan@localhost;
## westos.* 表示对数据库westos授权,若是 *.*表示对所有数据库授权
重新加载授权表 :
flush privileges;
## 授权表是默认自动刷新。但是如果,改完没作用,手动刷新
查看yuan用户的授权表:
show grants for yuan@localhost;
撤销用户的授权 :
revoke insert,update,delete,drop on westos.* from yuan@localhost;
删除用户:
drop user yuan@localhost;
数据库的网页图形管理
mysql的图形管理工具 : phpmyadmin
安装
yum install httpd -y
systemctl start httpd //开启httpd
systemctl enable httpd
systemctl stop firewalld //关闭火墙
systemctl disable firewalld
//因为软件是用php写的,所以系统需要php的解释器 ,所以要安装php相应软件
yum install php php-mysql -y
systemctl restart httpd
systemctl stop firewalld
还需要软件包:
phpMyAdmin-3.4.0-all-languages.zip //下载数据库网页软件压缩包
配置
tar jxf phpMyAdmin-3.4.0-all-languages.tar.gz2 -C /var/www/html
//解压压缩包并存放到/var/www/html
mv phpMyAdmin-3.4.0-all-languages mysqladmin //重命名(为了方便查看)
cd mysqladmin //进入这个目录
查看README文件 ,
less README
发现要查看当前文件中的 Documentation.txt
less Documentation.txt
发现需要修改文件,还要添加信息,不过文件中改填写的内容包括格式都已经给出了
下面就是照着文件中的去改 :
cp -p config.sample.inc.php config.inc.php ##修改配置文件
vim config.inc.php
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; ##里面的字符可以随便写
systemctl restart httpd 重启httpd服务生效
测试:
http://172.25.254.109/mysqladmin
因为是最简单的安装,所以显示缺少扩展,这里不用管它,直接进入就可以
//这样,就可以通过网络管理你的数据库