#数据库基本概念
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十 年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行 海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。
常用的数据库软件:
oracle按核心收钱,但是稳定性较高,不可定制
mysql开源免费的,有一个重要分支mariadb,和mysql是完全兼容的
一.安装
yum install mariadb-server -y ---安装数据库软件
systemctl start mariadb ---开启数据库服务
二.数据库初始化
1.关闭网络接口
默认情况下,数据库的网络接口是开启状态,为了提高安全性,需要关闭此接口
netstat -antlupe | grep mysql ---查看数据库的网络接口状态
vim /etc/my.cnf
10 skip-networking=1 ---关闭数据库的网络接口
systemctl restart mariadb.service
netstat -antlupe | grep mysql ---此时再查看,数据库的网络接口关闭
2.初始化设定
数据库起始状态设定信息不安全,需要进行以下设定
mysql_secure_installation
Enter current password for root (enter for none): ---输入当前的密码,第一次设置直接回车跳过
Set root password? [Y/n] y ---确认设置root密码
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y ---禁止匿名用户登陆
Disallow root login remotely? [Y/n] y ---远程禁止root登录
Remove test database and access to it? [Y/n] y ---删除测试数据库并访问
Reload privilege tables now? [Y/n] y ---重新加载
检测:
mysql -uroot -p 此时登陆数据库需要输入密码
三.数据库的管理
1.登陆
mysql -uroot -p ---root用户登陆数据库
![](https://i-blog.csdnimg.cn/blog_migrate/24774db7c4a1169c93af34e8c441bede.png)
2.建立数据库
1)列出数据库
SHOW DATABASES; ---列出数据库
![](https://i-blog.csdnimg.cn/blog_migrate/d03297da42c1a4894650737d4542e004.png)
2)建立数据库
CREATE DATABASE westos; ---建立数据库westos
![](https://i-blog.csdnimg.cn/blog_migrate/d017ebf9b664f7136f0332fb3d5fabba.png)
3)进入数据库
USE westos; ---进入数据库
![](https://i-blog.csdnimg.cn/blog_migrate/8fe46a135789fad154435409a19b8e4c.png)
4)建立表结构
CREATE TABLE linux (
-> username varchar(10) not null, ---表头为username ,字符数最多为10,不能为空
-> password varchar(50) not null ---表头为password,字符数最多为50,不能为空
-> );
![](https://i-blog.csdnimg.cn/blog_migrate/858f0985b5ca5c15332fe29c56fc8dbf.png)
5)查看表结构
DESC linux ---查看表结构
![](https://i-blog.csdnimg.cn/blog_migrate/bdd68f6edc53bb15651e70bb62f8d365.png)
6)在表中插入数据
INSERT INTO linux VALUES('dai','456'); ---在linux表中插入数据
INSERT INTO linux VALUES('westos','123');
![](https://i-blog.csdnimg.cn/blog_migrate/7ada90e51141a81fd271a56ba73e3119.png)
7.插叙表中的指定字段
SELECT * FROM linux; ---查询linux表中的所有字段
SELECT username,password from linux; ---查询linux表中的指定字段(表头)
3.更改
SELECT * FROM linux; ---查询linux表中的所有字段
用上面的进行检测(笔记与之前所建文件名有所不同,见到什么用什么)
1)更改表名
ALTER TABLE linux RENAME userdata; ---更改表名为userdata
![](https://i-blog.csdnimg.cn/blog_migrate/f69040bea5286959d0f218bc36acc633.png)
2)插入行
ALTER TABLE linux ADD age varchar(4); ---添加一行,表头为age,最长4个字符
![](https://i-blog.csdnimg.cn/blog_migrate/ca48eafbad0165c73be296a0631f81a5.png)
3)删除行
ALTER TABLE linux DROP age; ---删除表中一行
![](https://i-blog.csdnimg.cn/blog_migrate/124712b92b3ee97bf87b3638cd6680f2.png)
4)指定位置插入行
ALTER TABLE linux ADD age varchar(4) AFTER username; ---在username一行后添加age
![](https://i-blog.csdnimg.cn/blog_migrate/2b43f6ed91f9c21a51e5d6254fe66718.png)
5)更改表中数据
UPDATE linux SET age='20'; ---将linux表中的age更改为20
UPDATE linux SET age='18' WHERE username='westos'; ---将username为westos的age更改为18,可用and设置多个条件。
4.删除
1)删除符合条件的数据
DELETE FROM linux WHERE username='dai'; ---将linux表中符合username为dai的数据删除
![](https://i-blog.csdnimg.cn/blog_migrate/aa5ab31ef3718326f5c4902e5bb1a813.png)
2)删除表
DROP TABLE linux; ---删除表linux
![](https://i-blog.csdnimg.cn/blog_migrate/3a5c9ca7a0c028d3f9d7b09f4df03785.png)
3)删除数据库
DROP DATABASE westos; ---删除数据库westos
![](https://i-blog.csdnimg.cn/blog_migrate/c555ccf138a373a29274e3ff0686d4a2.png)
5.用户授权
1)创建本地用户
mysql -uroot -p ---超级用户登陆数据库
CREATE USER dai@'localhost' identified by 'westos'; ---创建一个本地用户dai,密码是westos
本地用户登录用于测试:
测试时候,再开个shell连接这个数据库,用本地用户lee登陆
mysql -udai -pwestos ---本地用户dai登陆数据库,密码为westos
2)root对本地用户进行授权
#查看数据库
GRANT SELECT on westos.* TO dai@localhost; ---给本地用户dai查看库westos的权限
本地用户查看库westos成功
#建立表
GRANT CREATE on westos.* TO dai@localhost; ---给本地用户dai在库westos建表的权限
本地用户建表hello成功
#删除表中信息
GRANT DELETE on westos.* TO dai@localhost; ---给本地用户dai删除westos库中表信息的权限
#删除表
GRANT DROP on westos.* TO dai@localhost; ----给本地用户dai删除库westos中表的权限
#撤销本地用户指定权限
REVOKE DELETE on westos.* FROM dai@localhost; ---撤销本地用户dai的删除权限
#删除本地用户
DROP USER dai@localhost; --删除本地用户dai
FLUSH PRIVILEGES; ---刷新
6.数据库的备份
1)备份指定数据库
mysqldump -uroot -predhat westos > /mnt/westos.sql ---以数据库root身份登陆,密码为westos,将库westos备份到/mnt/westos.sql
mysqldump -uroot -predhat westos --no-data > /mnt/westos.sql ---将库westos结构备份到/mnt/westos.sql
2)备份所有数据库
mysqldump -uroot -predhat --all-database > /mnt/westos.sql ---将所有库都备份
mysqldump -uroot -predhat --all-database --no-data> /mnt/westos.sql ---将所有库的结构都备份
模拟问题:
删除库westos
恢复方式1
mysql -uroot -predhat -e "CREATE DATABASE westos;" ---创建库westos
mysql -uroot -predhat westos < /mnt/westos.sql ---将备份的文件导入库westos中
mysql -uroot -predhat -e "SHOW DATABASES;" ---查看是否恢复
恢复方式2
vim /mnt/westos.sql ---编辑备份文件
CREATE DATEBASE westos; ---创建westos库
USE westos; ---进入westos库
mysql -uroot -predhat < /mnt/westos.sql ---将备份文件导入,因为备份文件写了创建库和进入库,所以这里不需要写导入哪个库
![](https://i-blog.csdnimg.cn/blog_migrate/602413f69043dd1cdc21c0bcfe2733a2.png)
7.数据库密码更改
1)已知超级用户密码
mysqladmin -uroot -predhat password westos ---将root用户的密码由redhat修改为westos
![](https://i-blog.csdnimg.cn/blog_migrate/0d23af4c9aed70b872e35dcb7b428237.png)
2)当超级用户密码忘记时:
#停止数据库服务
systemctl stop mariadb
#进入数据库安全模式
mysqld_safe --skip-grant-tables & ---进入mysql的安全模式,跳过授权列表
#进入数据库修改密码
mysql ---不需要输入密码,就可以进入数据库
SELECT User,password FROM mysql.user; ---查看用户及密码信息
UPDATE mysql.user SET Password='redhat' WHERE User='root'; ---修改超级用户密码为redhat
但是密码会以明文显示,安全性较差
UPDATE mysql.user SET Password=password('redhat') WHERE User='root'; ---将密码设置为设置为加密字符显示
#关闭因为数据库安全模式产生的进程
ps aux | grep mysql ---列出所有与mysql有关的进程(因为安全模式生成的)
kill -9 mysql的所有进程id
systemctl restart mariadb ---重启数据库服务
检测:
密码修改成功
8.安装phpmyadmin 数据库图形管理
1)下载phpMyAdmin-3.4.0-all-languages
2)yum install php php-mysql -y ---安装php服务和php对mysql的插件
3)systemctl restart httpd(需要安装)
4)tar jxf phpMyAdmin-3.4.0-all-languages ---解压在/var/www/html/,解压完后会有一个目录
然后将压缩包删除
5)mv phpMyAdmin-3.4.0-all-languages mysqladmin ---将这个目录重命名
6)cd mysqladmin
7)cp config.sample.inc.php config.inc.php ---以文件模板拷贝出一个新的文件,命名为config.inc.php,系统会读取。
8)vim config.inc.php
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; ---这是在文件mysqladmin/Documentation.txt中提示做的两步设定
测试:
http://172.25.254.162/mysqladmin 数据库登陆,图形方式管理数据库
新建数据库dai
在库dai中建表test,并设置3个表头
查看表结构
插入数据
验证:
shell命令查看数据库
进入数据库dai并查看其中的表
查看所有test的所有数据