一:mariaDB的概念
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
与 MySQL 相比较,MariaDB 更强的地方在于:
Maria 存储引擎 PBXT 存储引擎 XtraDB 存储引擎 FederatedX 存储引擎 更快的复制查询处理 线程池 更少的警告和bug 运行速度更快 更多的 Extensions (More index parts, new startup options etc) 更好的功能测试 数据表消除 慢查询日志的扩展统计 支持对 Unicode 的排序
二:mariaDB的搭建
前提:
<1>在搭建数据库之前,为了保持实验环境的纯净,我们需要将虚拟机重置。 <2>将虚拟机主机名改为mysql.westos.com,方便识别 <3>设置ipv4地址 <4>搭建yum源 <5>将虚拟机的图形界面转变为纯文本界面,节省内存 <6>在真机里ssh连接(最后两步看个人意愿)
实验开始:
<1>搜寻mariadb的安装包,并且安装
yum search mariadb yum install mariadb-server.x86_64 -y安装完成 <2>启动服务,并进入数据库
systemctl start mariadb systemctl enable mariadb此时可以直接进入数据库,但是这种方式是不安全的
为了使数据库更加安全,我们需要进行以下操作
<3>关闭接口,安全初始化。
netstat -antlupe | grep mysql 查看mysql开放接口的功能是否开启 vim /etc/my.cnf 在配置文件里,关闭网络接口 在里面写入 skip-networking=1重启服务,发现端口关闭
mysql_secure_installation 安全初始化,因为数据库的起始状态信息是不安全的<4>登陆数据库
mysql -uroot -pwestos (登陆密码westos,不推荐使用,因为密码裸露着) mysql -uroot -p (推荐使用)三:数据库的管理
注意,数据库里的;表示命令结束,而且在数据库里输入的字符只能是英文字符
<1>查询库,进入库以及查询表
SHOW DATABASES; 列出库 USE DATABASES; 进入库 比如: USE mysql; (在进入库里的时候;可加可不加) SHOW TABLES 列出库里面的表 SELECT * FROM user; 查询user表里面全部字段,在数据库里面,把一列叫做字段 SELECT Host,User FROM user; 查询user这个表里的host,user字段的信息 WHERE可以跟定查询条件 SELECT Host,User FROM user WHERE User='root'; 查询User=root的host,user字段的信息 SELECT Host,User FROM user WHERE Host='127.0.0.1';<2>建立库以及表和表的结构/字段
CREATE DATABASE westos;(库的名字自定义,这个库可以在库是none的时候建立,也可以在你的位置是别的库里面建立,是平行的) CREATE TABLE userlist ( -> username varchar(50) not null, -> password varchar(100)not null -> ); (创建一个表,表名是userlist,表里面的结构/字段是什么) DESC userlist; (查询userlist表的结构) SELECT * FROM userlist; (此时没有完善表的信息,所以为0)表创建好了 补充: char(5)字符必须是五个,定长字符。 varchar(5)五个及五个之内,可变长字符。
<3>插入字段的数据
此时的表里并没有数据与字段
INSERT INTO userlist VALUES ('lee','123'); (插入数据在表里,username是lee,passwd是123,把表的信息完善,注意几个字段就要填写几个数据) INSERT INTO userlist VALUES ('hhh','987'); SELECT * FROM userlist; (可以查询到表的信息)<4>更改
注意: <1>数据库与数据库里的名字不能随便更改,因为一个库会连着另一个库,若是随意更改会导致库与库之间可能查找不到,而随意更改库里的表名,可能会造成数据的丢失 <2>数据库以目录的形式存在 <3>可以更改这个库的目录达到更改这个库名,但是不推荐,因为不安全
更改表名
ALTER TABLE userlist RENAME userlinux;(更改userlist表的名字为userliunx) ALTER TABLE user_list RENAME userredhat;给表中添加字段以及修改字段的值
DESC userlist; (查看结构) SELECT * FROM userlist; (查询表的信息) ALTER TABLE userlist ADD age varchar(5) AFTER username; 在username字段后面添加一个age字段,长度为5 ALTER TABLE userlist ADD age varchar(5); 添加一个age字段,长度为5 UPDATE userlist SET age='12'; 默认这个表里的所有人年龄都是12 UPDATE userlist SET age='12'WHERE username='lee'; 只有lee这个用户的年纪为12
SELECT * FROM userlinux; (查询表的信息)
<5>删除(建议做这个实验前先备份,数据库的备份在删除后面讲解)
DESC userlist; (查看结构) SELECT * FROM userlist; (查询表的信息) ALTER TABLE userlist DROP age; 删除这个表里age这个字段 DELETE FROM userlist WHERE username='lee'; 删除userlist表中lee这个用户的信息 DELETE FROM userlist WHERE username='lee' or username='lee1' ; 删除userlist表中lee和lee1的信息 DELETE FROM userlist WHERE username='hhh' AND age='15'; 一个表中有多个hhh,为了防止删错,可以加上别的条件,比如年龄 DROP TABLE userlist; 删除表 DROP DATABASE westos; 删除库删除字段 删除字段信息
删除表
删除数据库
<6>数据库的备份
mysqldump -uroot -pwestos westos > /mnt/westos.sql 将westos这个库备份到/mnt下 mysqldump -uroot -pwestos westos --no-data 只备份westos库的结构,不要数据 mysqldump -uroot -pwestos --all-database 备份所有库 mysqldump -uroot -pwestos --all-database -no-data 备份所有数据库,只要结构,不要数据 恢复方式1 mysql -uroot -pwestos -e “CREATE DATABASE westos;” 建立一个westos数据库 mysql -uroot -pwestos westos < /mnt/westos.sql 将数据重新导回去 恢复方式2 vim /mnt/westos.sql 在数据库的数据文件里面写入 ##在文件中添加如下内容,使其自动执行: CREATE DATABASE westos; 建立一个westos数据库 USE westos; 进去库 然后再去执行命令 mysql -uroot-pwestos < /mnt/westos.sql 将数据重新导回去实验如下:
第一种方法:
先备份: 删除库
为了下一个实验环境纯净,我们将这个数据库删除
第二种恢复方法:
四:数据库的用户授权
在平时管理数据库中,我们需要不同的数据库用户有着不同的权限,比如可以在什么主机上登陆数据库以及对不同数据库进行的操作,为了解决这个问题,我们需要对数据库进行用户授权。
实验前提:
<1>打开网络接口
vim /etc/my.cnf 把端口那一行注释掉 systemctl restart mariadb netatat -antlupe | grep mysql<2>关闭防火墙
systemcyl stop firewalld实验如下:
SELECT Host,User FROM mysql.user; 查看数据库里的用户登陆方式,localHost表示只能本机登陆数据库,%表示可以在任何主机登陆 CREATE USER hhh@'localhost' identified by 'westos'; 创建一个只能本机登陆数据库的用户hhh,并且登陆密码是westos CREATE USER lee@'%' identified by 'westos'; 创建一个任何主机都能登陆数据库的用户lee,并且登陆密码是westos
测试:
在另一台ip为172.25.254.215的虚拟机里,搜寻并安装可以执行mysql命令,登陆数据库的软件
安装完成
在另一台主机上发现lee能登陆上数据库,hhh被拒绝 在本机上面测试,发现都能登陆上
但是我们发现,即使登陆上了,也看不到东西,这是因为我们没有查询的权力,如图所示:
为了解决这个问题,我们需要给用户授权。
用户授权实验如下
SHOW GRANTS FOR hhh@localhost; 查看hhh这个本机登陆用户的权限 GRANT SELECT,INSERT on westos.* TO hhh@localhost; 给hhh一个查询,插入westos库以及库里面内容的权力 REVOKE SELECT,INSERT on westos.* FROM hhh@localhost; 删除hhh查询,插入westos库以及库里面内容的权力 DROP USER hhh@localhost 删除hhh这个本机登陆用户任何主机登陆用户授权 测试:
本地登陆用户hhh的授权
如图所示看不见
授权查询和插入的权力 可以查询到
可以插入 删除权限 查看并删除这个本机登陆数据库的用户
五:修改数据库的密码
第一种方法:
mysqladmin -uroot -pwestos password lee 将密码westos改为lee,但是这种方法把密码在名面显现出来了,安全系数低 而且这个修改密码的方法不能修改普通用户,因为修改密码是对mysql里面的user进行操作,所以普通用户去改会被拒绝,只能进入库里用UPDATE修改第二种方法:
systemctl status mariadb systemctl stop mariadb 关闭服务 mysqld_safe --skip-grant-tables & 跳过数据库安全授权,此时授权是开放的,因为会占用终端,所以就用&在后台运行 mysql 此时可以直接进入 USE mysql SELECT * FROM user; UPDATE user set Password='westos' WHERE User='root'; 设定密码 SELECT * FROM user; 此时密码是显现出来的,不安全 UPDATE user set Password=password('westos') WHERE User='root'; 设定密码,给密码加密 SELECT * FROM user; 此时密码是加密的,安全 quit退出然后再执行以下操作
fg 将后台进程调用到前端 killall -9 mysql_safe 杀死mysal_safe的全部进程 pa aux | grep mysql kill -9 进程号 ps aux | grep mysql systemctl start mariadb mysql -uroot -pwestos 修改成功如图所示:
五:使用phpMyAdmin管理MYSQL数据库
使用phpMyAdmin管理MYSQL数据库,更加方便快捷
实验如下:
yum install httpd -ysystemctl start httpd cd /var/www/html/ ls 此时这个目录里面并没有东西
将php压缩包上传到这个目录 再去ls查看
tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 解压 mv phpMyAdmin-3.4.0-all-languages/ mysqladmin 重命名 cd mysqladmin 进入并查看这个包里面的内容 ls yum search php yum install php-mysql.x86_64 php.x86_64 -ysystemctl restart httpd 重启服务 cd /etc/httpd/conf.d/ httpd的子配置目录 ls 会看到一个php.conf
php -m 查看是否连接到mysql
cp config.sample.inc.php config.inc.php 复制一个模版文件config.inc.php less Documentation.txt 查看步骤vim config.inc.php 编辑复制过来的模版文件
在里面修改为以下内容
systemctl restart httpd测试:
在浏览器里输入172.25.254.115/mysqladmin,就会出现以下界面
输入帐号密码 就会进入以下界面
我们可以利用php对数据库进行管理,例如删除 用 mysql -uroot -p查看
新建一个用户llll,密码是963
用 mysql -uroot -p查看