数据库的介绍
-
什么是数据库
数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
数据库是一个按数据结构来存储和管理数据的计算机软件系统。 -
常见数据库
数据库有两种类型,分别是关系型数据库与非关系型数据库。
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
关系型数据库主要有:
Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等等。
非关系型数据库主要有:
NoSql、Cloudant、MongoDb、redis、HBase等等。
我们常用到的数据库就是mysql的开源数据库。
在linux中它的名称是mariadb。
mariadb的安装
dnf install mariadb-server.x86_64 -y
软件基本信息
服务名称:mariadb.service
服务默认的端口号:3306
主配置文件:/etc/my.cnf
服务配置文件:/etc/my.cnf.d/mariadb-server.cnf
数据目录:/var/lib/mysql
数据库的安全初始化
- 关闭数据库开放端口
公司数据库的端口如果对外开放,那么很容易被别人破译然后篡改数据,这对一个公司来说会是巨大的损失
编辑主配置文件:vim /etc/my.cnf
写入内容:
[mysqld]
skip-networking=1
重启服务:systemctl restart mariadb
命令:netstatus -antlupe | grep mysql,再去查询服务的端口发现就无法显示了
- 执行安全初始化脚本
在登录mysql是默认是不需要输入密码的,输入命令就直接登录进去了
这样就相当不安全了,所以我们需要安全初始化去设定设定我们数据库的密码
命令:mysql_secure_installation,执行后首先要选择是否要为当前的root用户设定密码,回车确定,然后再确定要设定密码,就可以输入密码了,后面的选择都选择yes就可以了
设定完密码后再去直接执行命令就无法登录了
我们需要指定用户和密码才可以登录
数据库的基本管理
对于数据库里的操作命令,我们一般都会使用大写操作来进行,并且数据库的指令后面需要用 “;” 结尾来执行
- 查看
命令:SHOW DATABASES; ,显示库名称
USE mysql; ,进入mysql库
SHOW TABLES; ,显示库中的所有表
SELECT * FROM user; ,查询关于user的所有数据,这些数据都是按表格来排列的,但是我们的界面长度并不能够来完全展示这个表格,所以数据都会换行显示出来
SELECT Host,User,Password,Super_priv FROM user; ,查询指定字段精确显示
- 新建
CREATE DATABASE test; ,新建库
CREATE TABLE linux (username varchar(6) not null,password varchar(12) not null); ,新建表,可以在输入命令时回车换行执行,如果哪条命令写错的话,系统会提示第几行有问题,varchar表示字符长度,not null 表示不能为空
DESC linux; ,显示表结构
INSERT INTO linux VALUES (‘user1’,‘321’); ,插入数据
插入后我们可以用 SELECT * FROM Linux 查看linux表格里的数据
- 更改
ALTER TABLE linux RENAME redhat; ,重命名表格名称,数据库是不可以重命名的
ALTER TABLE redhat ADD age varchar(3) AFTER password; ,添加新的数据列在表格里,并且可以自定义它的位置在哪列数据的后面
UPDATE linux SET age=‘18’ WHERE username=‘testuser’; ,添加数据到对应的数据行中
ALTER TABLE redhat DROP age; ,从表中移除数据列
- 删除
DElETE FROM redhat WHERE username=‘testuser’ AND age=‘18’;,删除指定数据
DROP TABLE redhat; ,删除表
DROP DATABASE test; ,删除数据库
数据密码管理
- 数据密码更改
mysqladmin -uroot -p123 password redhat
- 数据库密码破解
如果发现自己忘记了密码时,可以使用这个方法来重置密码。
systemctl stop mariadb ,停止服务
mysqld_safe --skip-grant-tables & ,跳过安全验证,执行后就可以不需要密码登录mysql
UPDATE mysql.user SET Password=password(‘redhat’) WHERE User=‘root’; ,更改数据在mysql库里的user表,里面有我们root用户和设定的密码加密字符串,我们可以直接进行更改数据
flush privileges; ,刷新数据
退出mysql登录
killall -9 mysqld_safe,killall -9 mysqld ,关闭mysql的所有进程
systemctl restart mariadb ,重启mariadb服务,去使用新的密码登录
用户授权
CREATE USER redhat@localhost IDENTIFIED BY ‘123’; ,允许redhat用户可以登录数据库使用123密码
SHOW GRANTS FOR redhat@localhost; ,显示redhat用户的权限,在没有任何权力下放前是没有权限展示的
GRANT SELECT ON test.* TO redhat@localhost; ,添加授权允许redhat用户可以访问test数据库
REVOKE SELECT ON test.* FORM redhat@localhost; ,删除允许redhat用户可以访问test数据库的授权
DROP USER redhat@localhost; ,删除redhat用户的登陆权限
数据库的备份
mysqldump -uroot -predhat --all-database ,备份所有数据
mysqldump -uroot -predhat --all-database --no-data , 只备份数据库表格格式,不备份里面的数据
mysqldump -uroot -predhat test , 只备份test库里的数据
mysqldump -uroot -predhat test > /mnt/test.sql , 只备份test库里的数据并输出到 /mnt/test.sql 里
mysql -uroot -predhat -e “create database test;” ,建立test库
mysql -uroot -predhat test < /mnt/test.sql,导入备份的test库数据到新建立的test库中
phpmyadmin的安装
phpmyadmin是一款开源软件,可以帮助我们更便捷的去控制数据库
-
dnf install group httpd php php-mysqlnd -y ,安装所需的软件包,安装后打开httpd服务
-
在网站上可以直接搜索phpmyadmin,在官网中去下载它的安装包
-
systemctl stop firewalld,停止火墙
-
unzip /root/Download/phpMyAdmin-5.0.1-all-languages.zip ,解压软件包,解压出的目录会在上一级目录里
-
cp /root/phpMyAdmin-5.0.1-all-languages/config.sample.inc.php /root/phpMyAdmin-5.0.1-all-languages/config.inc.php
-
编辑复制出来的文件:vim config.inc.php
写入参数:$cfg[‘blowfish_secret’] = ‘ba17c1ec07d65003’;
-
cp -r /root/phpMyAdmin-5.0.1-all-languages/ /var/www/html/ ,复制软件目录到php的默认发布文件里
-
mv /var/www/html/phpMyAdmin-5.0.1-all-languages/ /var/www/html/phpmyadmin ,为了方便使用,重命名目录
-
firefox http://192.168.0.12/mysqladmin