1.什么是数据库?
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作
所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合
数据对一个企业是非常重要的,其实就相当于我们每个人的信息就是自己的属性,并且把它记录在一个文件里面
多张表格组成一个数据库,tab (表)---->db (库)----->数据库软件
我们现在学对数据库的一些基本操作,其实就是一个高级的excel表格
2.什么是mariadb数据库?
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 ,MariaDB的目的是完全兼容MySQL
包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB
MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN
此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中,MariaDB名称来自Michael Widenius的女儿Maria的名字
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体
分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能,这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎
MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱
于是决定重新开发代码全部开源免费关系型数据库,这就是MariaDB
在navicat中操作mariaDB的界面和提示符还是mysql端口也是3306 外人看起来除了数据库名字改了其他和mysql完全一致
mariaDB在各方面都是mysql创新和提高版本 而不是简单的替代品
mysql和mariaDB开发团队一致,区别在于mysql已经被oracle闭源了而mariaDB是开源的
3.搭建实验环境
(1)在真机里面重置及打开虚拟机。
(2)改主机名字。
- hostnamectl set-hostname mysql.westos.com
(3)配置本地网络,ip设为静态ip,重启才能生效。
(4)配置本地yum源
4.安装mariadb数据库的服务软件
(1)寻找这个软件
(2)安装并开启mariadb服务
(3)输入mysql进行管理,按Ctrl+D退出
(4)安全初始化
数据库起始状态设定信息是不安全的,需要做以下设定
mysql_secure_installation数据库安全初始化脚本,给定root用户以及密码
尽心安全初始化
设置root密码
禁止匿名用户登录数据库
禁止远程登陆数据库
移走测试的数据库并进入数据库
重新加载表格
初始化完毕,此时不输入密码是进入不了数据库的
(5)数据库的登陆
mysql -uroot -predhat 这样直接裸露密码使数据库很不安全
mysql -uroot -p 可以利用刚才设置的密码进行登陆数据库,这样比较安全
(6)安全设置
默认情况下,数据库的网络接口是打开的,为了安全需要关闭此接口
netstat -antlupe | grep mysql (查看数据库的网络接口是否开启)
我们可以看到3306接口是开启的,我们为了安全需要将它关闭
写入skip-networking=1 表示3306接口关闭
重启服务
再次查看网络接口看3306接口是否还开启
我们可以发现3306接口已经关闭
此时我们用本地用户登陆就很安全了
5.数据库的管理
(1)数据库的查询
1.mysql -uroot -p 进入数据库
2.SHOW DATABASES; 查看都有哪些数据库
3.USE DATABASES;(刚刚查看出来的数据库其中的一个),进入指定的数据库
4.SHOW TABLE;查看该数据库中有哪些表格
5.SELECT * FROM TABLENAME;(查看该表格中所有的内容,可以选择自己想看的进行查看)
6.SELECT Host,User(列:字段条件)FROM user (表格名字) WHERE User=‘root‘(行条件);
注意:所有的查询都是以分号结尾的,如果输错了Ctrl+c 退出或者quit
(2)数据库的建立
1.mysql -uroot -p 先进入数据库;
2.SHOW DATABASES; 列出存在的库;
3.CREATE DATABASES westos(名字); 建立新的库;
4.Use westos; 进入新建立的这个库
5.CREATE TABLE linux ( 在这个库里面建立表
->username varchar (50##字符长度)not mull, 用户登陆的时候名字和密码不能为空
->password varchar (50##字符长度)not mull
->); 以这个结尾
6.DESC linux; 查看新表的结构
7.INSERT INTO linux (表格名字) VALUES(‘lee','123'); 插入的信息符号必须是英文字符
8.SELECT username,password FROM linux; 查询指定字段在linux表中
建立westos这个数据库
查询是否建立成功
进入westos这个数据库,在这个数据库中建立名叫linux的表格,注意建立表格时的格式,名字跟密码分开两行写的原因是出问题是方便排错
列出该表格的字段框架信息
在该表格里面插入一行数据
查看该表格里面的所有内容
指定查看username这一行
变长字符varchar(5)1 2 3 4 5个均可以 ##更方便
定长字符char(5)不够要打空格
(3)数据库的更改
数据库的名字不能随便改(涉及到数据库之间的关联查找)
数据库也是以目录下文件的形式存在的
在目录下,也可以直接改数据库的名字,可以成功,但是不安全
1.UPDATE linux SET password=password('lee') WHERE username='lee'; 更改表格里面的信息
2.ALTER TABLE linux ADD class varchar(20); 在表格里面添加列
3.ALTER TABLE linux DROP CLASS; 在表格里删除这个列
4.ALTER TABLE linux ADD age varchar(20) AFTER password; 添加列的时候指定位置(不能在最前面,没有参照物的话会造成数据丢失)
5.ALTER TABLE linux RENAME redhat; 给数据库更改名字
将westos这个数据库里面的linux表的username是tian 的那一行的password改成tian 并加密
在linux表格里面添加age列
在linux表格里面删除age列
指定添加age列到useranme列后面
将表格名字linux改为linuz
(4)数据库的删除(数据库,表格,表格里的内容)
1.先备份再删除
2.DELETE FROM userlist WHERE username='lee'; 删除userlist 这个表格里面名字是lee的这一行。
3.DELETE FROM userlist WHERE username='lee' or username='lee1'; 删除两行
4.DELETE FROM userlist WHERE username='lee' AND age='12'; 当遇到名字一样的时用age来区分
5.DROP TABLE linux; 删除表格
6.DROP DATABASE westos; 删除数据库
先进行备份
删除数据库westos
恢复数据库westos的时候,先建立这个库再把原来的数据导入
可以看到数据完全恢复
为数据库表linux 中加入几组数
删除username为haha的那一组
再次加入几行,使得有组有同样的username但是password不同
我们在实行删除操作时,要加上password用来区分
删除linux这个表
(5)用户授权(不能所有的都在本地root下面)
1.vim /etc/my.cnf
2.#skip-networking=1 (开启网络接口3306)
3.systemctl restart mariadb 重启数据库
4.netstat -antlupe | grep mysql (查看数据库的网络接口是否已经开启)
5.关闭火墙
1.mysql -uroot -p 先以root身份登陆数据库
2.SELECT Host,User FROM mysql.user; 查看有哪些用户可以登陆数据库
1.CTEARE USER tian@'localhost' identified by 'tian'; 新建一个用户tian 只允许在本地主机登陆数据库
2.新建之后可以立即查看
3.mysql -utian -p 密码为tian
4.SHOW DATABASES; 可以登陆,但是没有权利
再次用root用户登陆,然后分配权限
GRANT SELECT,INSERT on mysql.* TO tian@localhost; 对tian授权mysql这个库里面所有的表格内容
SHOW GRANTS FOR westos@localhost; 看tian这个本地用户的权力
再次用tian用户登陆mysql
使用SHOW DATABASES时候已经可以看到myql这个库,使用USE mysql时候,已经可以进去mysql这个库,并且使用SHOW TABLES也可以看到mysql这个库里的表.
再次切换root用户登陆mysql
REVOKE SELECT,INSERT ON mysql.* FROM tian@localhost; 回收SELECT和INSERT权力对于本地tian用户。
SHOW GRANTS FOR tian@localhost;
再次用tian用户登陆数据库,SHOW DATABASES就看不到什么了
登陆root用户删除tian用户
(6)数据库的备份
1.mysqldump -uroot -predhat westos > /mnt/westos.sql (完全备份westos这个库)
2.mysqldump -uroot -predhat westos --no-data (备份westos这个库的表格形式,不要数据)
3.mysqldump -uroot -predhat --all-database (完全备份所有库)
4.mysqldump -uroot -predhat --all-database --no-data (备份所有的库不要数据)
恢复方法1:
1.mysql -uroot -predhat -e "CREATE DATABASE westos"; 先创建westos这个库
2.mysql -uroot -pwestos westos < /mnt/westso.sql; 再将刚才备份的数据库还原回去
先把原有数据移到其他地方
先把westos这个数据库删除
恢复数据库的过程是先建立一个新的,再把原来的数据导回来
可以看到数据完全恢复了
恢复方式2
1.vim /mnt/westso.sql 直接在备份的数据库的文件里面写要恢复的库的信息
2.写入这两行内容:
CREATE DATABASE westos;
USE westos;
3.mysql -uroot -predhat < /mnt/westos.sql 直接还原数据库数据
先备份
删除数据库westos
编辑vim /mnt/westos.sql 在文件中加入两行分别是 CREATE DATABASE westos; USE westos;
把数据还原回去
打开数据库
发现数据库WESTOS的所有数据都已恢复
6.数据库的密码管理问题
(1)知道数据库密码时可直接修改
mysqladmin -uroot -predhat password westos
(2)当超级用户密码忘记时
- systemctl stop mariadb 关闭数据库服务
- mysqld_safe --skip-grant-tables & 将安全检测进程打入后台
- mysql 登陆数据库
- update mysql.user set Password=Password('redhat'') where User='root'; 改数据库的密码
查看被打入后台的进程
查看全部进程并杀死进程。否则下次登陆时,免密登陆
我们可以看到用密码可以登陆,无密码则不行
7.安装phpadmin数据库图形管理
yum install -y httpd
firewall-cmd --list-all
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
tar zxf phpMyadmin-4.0-10.20-all-languages.tar.gz -C /var/www/html/
mv phpMyadmin-4.0-10.20-all-languages phpMyadmin
yum install -y php
systemctl restart httpd
yum install -y php-mysql
yum install -y php-mbstring-5.4.16-21.el.x86_64.rpm
systemct restart httpd
通过浏览器访问: http://172.25.254.115/phpMyadmin
从真机发送安装包给虚拟机
安装httpd
启动httpd服务,并且设置开机生效
给firewall中加入http服务
安装php服务
安装php-mysql以及php-mbstring-5.4.16-21.el.x86_64.rpm
==重启httpd服务
在浏览器中浏览 http://172.25.254.115/phpMyadmin ,发现可以使用图形化管理数据库
选择语言用root用户密码登陆即可
建立yty111数据库
在yty111数据库中建立westos表
插入值。
然后利用命令查看数据库,看用图形的方式建立的数据在不在
要确定唯一的值才可以更改表中的数据,我设置了username为唯一