一、基础知识
1、什么是数据库?
- 数据库,简而言之可视为电子化的文件柜-存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
- 所谓“数据库”是以一定的方式存储在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
- 多张表格组成一个数据库。
- 数据库中有读写锁,保证数据一致型。
2、数据库的分类
主流数据库:oracle mysql pgsql db2 SQLserver mongodb key-value (关系型数据库) redis memcache (内存型数据库)
- 关系型数据库:它通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据。
- 内存型数据库:内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数
据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内
存拷贝打交道。
2、什么是MySQL数据库?
- MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
- MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
- MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
- MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- 由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
2、什么是mariadb数据库?
- Mariadb数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL(General Public License 通用公共许可证)授权许可。
- Mariadb的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
- API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。
- 在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
3、Mariadb数据库的发展?
- Mariadb由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。
- MariaDB名称来自Michael Widenius的女儿Maria的名字。
二、安装数据库
【1】
服务端:(在虚拟机server上)
yum install mariadb-server -y #安装服务端软件
systemctl start mariadb #开启mariadb数据库
systemctl enable mariadb #开机自启动
systemctl status mariadb #查看状态
【2】
客户端:
yum install mariadb -y
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
注:本次实验是在服务端安装mariadb
客户端的mariadb只能查看不能修改
三、数据库mariadb的命令操作
1、查看数据库端口
netstat -antulpe | grep mysql
mysqld #d参数表示服务在后台运行
3306 #数据库端口
2、主配置文件: /etc/my.cnf
vim /etc/my.cnf
10 skip-networking=1 #关闭对外的数据库端口,3306端口只允许内部使用
systemctl restart mariadb
3、数据库安全初始化
mysql_secure_installation
修改超户密码
禁止匿名登陆
禁止超户远程登陆
删除测试数据
刷新授权表
测试:
【1】
mysql -uroot -p
【2】
SHOW DATABASES; #显示无test数据
4、数据库的基本管理
mysql -uroot -predhat -e "SHOW DATABASES";##在shell命令行中查看
mysql -uroot -p #登陆mysql,密码隐藏
mysql -uroot -predhat #密码在外边
5、数据库查看
SHOW DATABASES;
6、表查看
USE mysql; #使用mysql数据库
SHOW TABLES;
7、表内容查看
SELECT * FROM user;
8、查看表的结构属性
DESC user;
9、查看插件
SELECT * FROM plugin; #密码可用性插件查看方式
SHOW PLUGINS; #查看插件
10、针对字段搜索
SELECT * FROM user; #查看user表的信息
SELECT Host,User,Select_priv FROM user; #针对字段搜索
SELECT Host,User,Select_priv FROM user WHERE Host='localhost'; #按照条件查找
11、新建
【1】新建库
CREATE DATABASE westos;
SHOW DATABASE;
【2】新建表
USE westos;
CREATE TABLE linux(
username varchar(10) not null,
password varchar(20) not null #not null (表示不能为空)
);
【3】插入内容
DESC linux;
INSERT INTO linux VALUES ('wsp','123');
SELECT * FROM linux;
SELECT username,password FORM linux;
12、增加表属性
ALTER TABLE linux ADD age varchar(4) AFTER password; #添加在password前,不指定则默认可为 空。
13、修改表的属性
ALTER TABLE linux CHANGE password password VARCHAR(50) NOT NULL;
14、删除表中属性
DESC linux;
ALTER TABLE linux DROP age;
15、重命名表
ALTER TABLE linux RENAME user;
16、更新表的内容
ALTER TABLE user ADD ckass varchar(10) NOT NULL;
SELECT * FROM user;
UPDATE user SET class='linux' WHERE username='wsp' AND password='123';
SELECT * FROM user;
17、删除
【1】删除表
SHOW TABLES;
DROP TABLE user; #删除数据库westos中的表user
SHOW TABLES;
【2】删除数据库
SHOW DATABASES;
DROP DATABASE westos; #删除数据库
SHOW DATABASES;
18、用户授权
方法一:
【1】创建用户
CREATE USER westos@‘%’ identified by 'westos'; #允许同一网段的所有主机登陆
CREATE USER westos@localhost identified by 'westos'; #创建用户,只能从本机登陆 密码是 westos,默认建立的用户无权限
SELECT Host,User FROM mysql.user;
测试:
mysql -uwestos -pwestos #使用westos用户登陆,密码westos
SHOW DATABASES; #此时无权限,查看不了原有数据库。
【2】用户授权
SHOW DATABASES;
GRANT SELECT,INSERT ON userdata.* TO westos@localhost; #授权,userdata库中的所有表给SELECT和INSERT 权限
FLUSH PRIVILEGES;
SHOW GRANTS FOR westos@localhost; #查看权限
实验:
1、创建本地登录用户westos
2、登陆用户,此时无权限,不能查看数据库
3、授予SELECT数据库userdata中的所有表的权限
查看数据库
授权
westos执行SELECT权限
此时无INSERT权限
4、授予INSERT数据库userdata中的所有表的权限
查看数据库,此时westos拥有SELECT和INSERT权限
方法二:
GRANT SELECT ON userdata.* TO westos@localhost IDENTIFIED BY 'westos'; #创建用户并授权
19、撤销用户授权
REVOKE SELECT ON userdata.* FROM westos@localhost #撤销用户SELECT权力
【1】撤销本地用户对于userdata数据库中所有表的SELECT权限
【1】撤销本地用户对于userdata数据库中所有表的INSERT权限
20、删除数据库并恢复
【1】备份
mysqldump -uroot -predhat --all-databases > /mnt/userdata.sql #备份数据库
mysqldump --all-databases --single-transaction --triggers --routines --events --host=127.0.0.1 --port=3306 --user=root --password=redhat > /mnt/backup.sql #完整备份
【2】删除
mysql -uroot -predhat -e "DROP DATABASE userdata;"
mysql -uroot -predhat -e "SHOW DATABASES;"
【3】恢复
恢复方式1:
mysql -uroot -predhat < /mnt/userdata.sql
ERROR
vim /mnt/userdata.sql
21 CREATE DATABASE userdata;
22 USE userdata;
mysql -uroot -predhat
SHOW DATABASES;
SELECT * FROM userdata.usertab;
恢复方式2
mysql -uroot -predhat -e "DROP DATABASE userdata;"
mysql -uroot -predhat -e "CREATE DATABASE userdata;"
vim /mnt/userdata.sql
删除21 22 行
mysql -uroot -predhat userdata < /mnt/userdata.sql #指定导入到userdata库
21、密码更改和破解
存放用户密码:
USE mysql;
SELECT * FROM user;
超户密码知道:
mysqladmin -uroot -predhat password westos #更改超户密码为westos
超户密码忘记
【1】
systemctl stop mariadb
mysqld_safe --skip-grant-tables &
【2】
mysql
UPDATE mysql.user SET Password='redhat' WHERE User='root'; #明文方式
UPDATE mysql.user SET Password=password('redhat') WHERE User='root';
1、明文方式修改密码(不安全)
2、加密方式修改密码
【3】
ps aux | grep mysql
kill -9 mysql进程
【4】
systemctl start mariadb
mysql -uroot -predhat
注意:
数据库启动时加载数据库授权表,数据库认证表,跳过授权表则可以直接进入系统。
mysql_safe --skip-grant-tables & 跳过授权表
跳过授权表后,删除进程,否则下次登陆还会跳过。
三、phpMyAdmin以图形化方式展示数据库
阿帕奇 80端口,默认访问页面 index.html
常见错误及原因:
在网页中搜索出现not connection
【1】防火墙未允许
【2】服务没开
安装图形化界面phpMyAdmin步骤:
【1】
yum install httpd -y
【2】
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
firewall-cmd --list-all
【3】
lftp 172.25.254.250 #lftp登陆250主机下载安装包
cd pub/software/
get phpMyAdmin-4.0.10.20-all-lanages.tar.gz #下载
get php-mbstring-5.4.16-21.el7.x86_64.rpm #下载
tar zxf phpMyAdmin-4.0.10.20-all-lanages.tar.gz -C /var/www/html #解压
mv phpMyAdmin-4.0.10.20-all-lanages phpMyAdmin #移动
##php 动态页面 ,但此时在firefox中查看是文本形式
【4】
yum install -y php
systemctl restart httpd
【5】
yum search php
yum install php-mysql.x86_64 -y
rpm -ivh php-mbstring-5.4.16-21.el7.x86_64.rpm
systemctl restart httpd
【6】
浏览器访问:http://172.25.254.197/phpMyAdmin
【1】登陆
使用root身份登陆
【2】登陆后的页面
【3】在数据库创建表
CREATE
DESC
SELECT