数据库的配置

一、什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,

每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成database

二、数据库的应用

首先配置yum源,在真机的超级用户里挂载镜像文件到var/www/html/source7.0   和/soure7.0目录下

安装数据库:yum install mariadb-server -y

.................................此处省略


打开数据库:systemctl start mariadb

本机登陆数据库,由下图可以看出 ,本地用户可以登陆,并且不需要密码就可登陆数据库,数据库的安全性需要考虑


查看数据库(mysql)的网络端口信息,默认情况下,数据库的网络接口是打开的:netstat -antuple | grep mysql

为了安全起见需要关闭此接口


关闭防火墙:systemctl stop firewalld

查看防火墙的状态;

由下图可以看出Active:inactive (dead),说明防火墙已经被关闭


编辑数据库文件:vim /etc/my.conf

10 skip-networking=1   #跳过网络端口

编辑数据库的配置文件时,需要重新打开的数据库:systemctl restart mariadb

查看数据库的网络接口是否关闭:netstat -antuple | grep mysql

由下图可以看出,执行此命令看出,没有任何信息和报错信息,所以数据库的网络接口已经关闭;


远程登陆数据库:mysql -uroot -hid

此时不能直接登陆数据库,会提示错误信息,显示命令不存在

[kiosk@foundation60 Desktop]$ mysql -uroot -h172.25.254.118
bash: mysql: 未找到命令...

配置yum源,挂在镜像文件到/var/www/html/source7.2和/source7.2目录下;这些命令必须载超级用户下操作,因为普通用没有权限;

安装数据库:yum install mariadb-server -y


.............................


打开数据库:systemctl start mariadb

远程登陆 数据库(退出超级用户,在普通用户)

-uroot:数据库的登陆用户的类型为超级用户;

-h:指定登陆用户的ip


三、数据库加密

(1)数据库的加密

数据库安全:mysql_secure_installation

[root@localhost ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation:行379: find_mysql_client: 未找到命令

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):  #第一次执行加密命令时,直接回车就好,如果不是第一次运行,那么需要输入上次加密数据库的密码
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y   #设定超级用户的密码
New password:  #输入新的密码
Re-enter new password:  #请再次输入密码

Password updated successfully! #此时显示密码更新成功
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y  #是否移除超级用户,生产环境建议删除,此时选择Y,也可直接按'enter'
 ... Success! #显示移除成功


Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y  #是否禁止本地用户进行远程连接,此时选择y,当然这一点根据自己的意愿自行选择

... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y  #是否移除test数据库,y代表删除

 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!


Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y    #是否重新加在权限表
 ... Success!


Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.


 ... Success!

以超级用户的身份登陆数据库;-p 代表以密码的形式登陆:mysql -uroot -p

此时会输入密码,密码输入正确后会登陆数据库

错误的登陆形式:[root@localhost ~]# mysql
                           ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

由上图可以看出会出现错误信息:对于超级用户是没有权限的,因为设置了密码,就必须以密码的形式的登陆,就好比你有给门上了锁子,那么我们必须用钥匙去开锁,而mysql登陆数据库,是一种免密登陆的方式;


(2)密码的修改

关闭数据库:systemctl stop  mariadb

数据库的安全设置,& 调回后台

登陆数据库:mysql

修改密码:update mysql.user set Password=password('修改后的密码') where User='root';

选择mysql数据库:USE 数据库的名称;

显示数据库的表单:SHOW TABLES;

查看user表单里的所有信息:SELECT * from  user;

fg命令把当前环境的后台作业到前台来:fg

关闭数据库的进程

查看端口信息

关闭数据库的端口

查看端口信息

打开数据库:systemctl start mariadb

验证密码是否已经被修改:由下图可以看出,以密码lee登陆数据库


四、数据库的应用

需要特别注意的是,在数据库 当中执行命令时,需要以“;”来结尾,否则就会出现“->”的提示符号,如果继续在提示符后面添加命令时,那么就会出现命令 被重复写了两遍,并且被写在了同一行当中;如果我们直接按ctrl+c的话,数据库就会被直接退出,那么我们在做后续的操作时,就必须重新登陆数据库,大大降低了工作效率。

显示数据库:SHOW DATABASES;


选择数据库:USE  数据库的名称;

                     USE  mysql;


显示mysql数据库中的表:SHOW TABLES;


查询user表当中的所有信息:SELECT * FROM  user;

 其中:SELECT :查询信息;

           *  :代表所有的信息;

           FROM 表的名字;从这个表当中做什么事情;

由下图可以看出,查询的信息给人的感觉很乱 ,那是因为信息量太大,没有办法显示,其实它就是一个表的信息,并且以表格的形式显现出来;



从user表中查询 User,Host,和Passwd的相关信息;


创建数据库: 建立库:CREATE DATABASE 库名;


选择数据库:USE 数据库的名称;

建立表:CREATE TABLE 表名,并且添加表中的数据段;

在linux表中添加信息:INSERT INTO 表名 values ('hu','317'); 

要添加的username 和password密码信息必须要用单引号引起拉,并且使用","来做信息的连接


显示linux表中的所有信息:SELECT * FROM linux;


修改表的名字:ALTER TABLE 旧表的名称 RENAME 新表的名称;

由下图SHOW TABLES;命令可以看出名字已经被成功修改为messages;

在messages表中添加字段age并且字段类型设置为可变字符型,字符长度为50

 命令:ALTER TABLE messages ADD 字段的名称  varchar(50);

在字段username后面添加agg字段并设定字段类型为varchar,字段的长度为50;

与上一条命令的不同之处在于后面添加了“AFTER username”;

命令:ALTER TABLE messages ADD 新字段的名称  varchar(50) AFTER 旧字段名称;

注意添加字段时,不能添加到第一个字段之前,否则会发生数据库的错乱;

删除messages表中的age字段

命令:ALTER TABLE 表名 DROP 字段;

更改表里的信息:UPDATE 表名  SET passwd='123'  WHERE username='字段内的某个信息';

由上个图和本次截图比较,可以看出password由‘317’改为了‘123’;

删除linux表内的lee这一行: DELETE FROM 表名 WHERE username='字段内的信息';

由下图可以看出,表内已经没有内容,说明删除成功;

删除messages表:DROP TABLE 表名;

由命令:SHOW TABLES,可以看出,库里已经没有表,说明删除成功;

删除westos库:DROP DATABASE westos;

由下图可以看出,删除westos库成功

五、PHP连接数据库

安装php和apache服务:yum install php httpd -y

由下图中的“完毕”可以看出已经安装php和httpd服务




打开httpd服务:systemctl start httpd

关闭防火墙:systemctl stop firewalld


切换到http服务的目录下:cd /var/www/html


复制php安装包到http服务的目录下:scp -r /root/phpMyAdmin-3.4.0-all-languages.tar.bz2 /var/www/html


查看/var/www/html目录下是否有php安装包: ls  /var/www/html

解压以.bz2结尾的文件:tar jxf  phpMyAdmin-3.4.0-all-languages.tar.bz2

  -j:代表使用‘bzip2’程序进行文件压缩;

*.tar.bz2 #用tar -xjf 解压

*.tar       #用tar -xvf解压

*.gz       #用gzip -d或者gunzip解压

*.tar.gz 和*.tgz #用tar -xzf解压

*.bz2      #用bzip2 -d 或者bunzip2解压

*.tar.Z    #用tar -xZf解压

查看php安装包是否被解压,由下图可以看出:由两个关于php的安装包,蓝色的代表是已经解压过的php安装包,而红色代表的是压缩过的安装包

删除压缩过的安装包:rm -fr phpMyAdmin-3.4.0-all-languages.tar.bz2

移动php安装包到mysqladmin目录下:mv phpMyAdmin-3.4.0-all-languages/    mysqladmin

复制文件:cp config.sample.inc.php  config.inc.php

查看php扩展:php -m

安装数据库:yum install php-mysql.x86-64 -y


.................................................此处省略

查看php扩展:php -m

打开httpd服务:systemctl  restart httpd

                        这里注意的是第一次安装httpd服务时,使用start 来开启httpd服务

                        以后打开httpd服务时,必须使用restart开开启服务

查询php安装包是否被安装:rpm -qa | grep php


通过网页访问数据库:http://172.25.254.118/mysqladmin



输入用户和密码,点击执行登陆数据库



图形界面修改数据库的密码:刚登陆数据库后,就会停留在首页面,页面会有个常规设置 ,点击修改密码,就会弹出修改密码的界面,在密码栏里输入你要修改的密码;密码的加密方式有两种,分别是MysQL 4.1+,和MysQL 4.0兼容,也可以点击生成密码,自动生成密码,然后点击执行,此时密码就可以修改成功;


验证密码是否修改成功:在虚拟机里输入以下命令,mysql  -uroot -p123

命令详细的解释:mysql #登陆数据库,如果没有密码,则可以使用mysql直接登陆。

                        -u   #指定用户

                        -p    #以密码的形式登陆数据库,后面的密码可加可不加,在这里为了验证密码的正确性,所以后面接密码;但在企业里不支持这样的登陆方式,因为这样会导致数据库密码的泄露,那么我们数据库的信息安全性存在很大的隐患。

[root@localhost ~]# mysql -uroot -p123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 54
Server version: 5.5.35-MariaDB MariaDB Server

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>       

创建数据库:点击“新建数据库“,输入数据库的名称,然后点击“创建”,此时数据库已经创建完成。

下图是没有新创建数据库之前的数据库:由图可以看出数据库的个数为3。


在新建数据库里填入数据库的名称sweet,然后点击创建。


查看创建的数据库sweet是否存在:由下图可以看出,数据库总数为4,并且数据库里有sweet数据库。

在sweet数据库创建表dianlu2

点击sweet数据库,紧接着点击新建数据表,输入数据表的名称dianlu02,和表格里的字段数,然后点击执行,就会出现字段信息的表格,输入字段的名称,和长度值,类型选择可变字符长度,点击执行,就可以创建成功。

创建表,由下图可以看出,表dianlu02创建成功。


输入字段信息,即表头信息,类型为可变长字符,和长度值


查看表格是否创建完成,由下图可以看出,我们创建表格成功,表的名称为dianlu02,字段分别为姓名,年龄,身高,体重,和体育成绩。

我们也可以选择插入数据的方式来填写信息,对信息进行修改删除,等多项操作,这里就不一一展示。

六、授予数据库的权限

(1)创建用户lee,并设置用户的密码:CREATE USER lee@localhost identified by 'westos';

MariaDB [(none)]> CREATE USER lee@localhost identified by 'westos';

Query OK, 0 rows affected (0.00 sec)

创建完用户,我们可以登陆数据库,但此时,数据库不能进行任何操作,需要对用户进行授权;

登陆lee用户


下图显示没有权限


首先要做的是为用户提供访问他们将需要的信息权限:GRANT ALL PRIVILEGES ON  *.*TO lee@localhost;

*.*代表他们可以访问的数据库和表(这些命令允许用户在所有的数据库和表中访问,修改添加)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO  lee@localhost;
Query OK, 0 rows affected (0.00 sec)

确定要为新的用户设置权限,请务必重新加载所有的权限:FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

此时已经加载成功。如下图所示:


允许创建新数据库和表:GRANT CREATE on  *.* TO lee@localhost;

MariaDB [(none)]> GRANT CREATE on *.* TO lee@localhost;

Query OK, 0 rows affected (0.00 sec)

如果要向其授予对任何数据库或数据表的访问权限,请确保在数据库的名称或表名称的地方放置(*)号。

此时可以在lee用户下,执行创建数据库,表和添加表格里信息,删除,和修改信息等任何操作。

下图为创建数据库kuaiji;

在kuaiji数据库下创建表xi

添加字段信息:

如下图可以看出,字段信息age添加成功;


将字段信息chengji修改为wc,如下图所示:修改成功



(2)新创建以用户,并设置密码:CREATE USER 用户名@localhost identified by '密码';

MariaDB [(none)]> CREATE USER hu@localhost identified by 'westos';

Query OK, 0 rows affected (0.00 sec)

如下图所示:数据库登陆界面:




允许hu用户,进行访问sweet数据库:GRANT SELECT on 数据库的名称.* to  新建用户名@localhost;

MariaDB [(none)]> GRANT SELECT on sweet.* to hu@localhost;

Query OK, 0 rows affected (0.00 sec)

如下图所示:hu这个用户可以访问sweet数据库,但此时没有权限执行其他的操作,这个时候我们需要考虑授权的问题。


允许hu用户,对sweet数据库进行插入信息:GRANT INSERT on 数据库的名称.* to 新建用户名@localhost;

MariaDB [(none)]> GRANT INSERT on sweet.* to hu@localhost;

Query OK, 0 rows affected (0.00 sec)

在表格里添加信息,如下图所示:


从下图所示:可以看出插入信息成功。


对本机进行更新:GRANT UPDATE on sweet.*  to hu@localhost;

MariaDB [(none)]> GRANT UPDATE on sweet.*  to hu@localhost;
Query OK, 0 rows affected (0.00 sec)


刷新mysql的系统权限相关表,否则会出现访问拒绝,另一种方式,就是重新启动mysql服务器,

MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

并且可以进行修改信息:下图的zhangsan的年龄被修改为35;


给hu用户对sweet数据库添加删除的权限:GRANT DELETE on  sweet.*  to  hu@localhost;

MariaDB [(none)]> GRANT DELETE on  sweet.*  to  hu@localhost;

Query OK, 0 rows affected (0.00 sec)

在添加删除权限之前,删除数据库信息:

由下图可见:删除数据库的信息lisa,点击是确认删除


由下图可以看出,不能删除数据库sweet里的表dianlu02的信息lisa


在添加删除权限之前,删除数据库信息:

由下图可以看出数据库sweet里所谓表dianlu02里的lisa 已经被删除


查看用户的授权:SHOW GRANTS  FOR hu@localhost;

MariaDB [(none)]> SHOW GRANTS FOR   hu@localhost;
+-----------------------------------------------------------------------------------------------------------+
| Grants for hu@localhost                                                                                   |
+-----------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'hu'@'localhost' IDENTIFIED BY PASSWORD '*28C1E2BE21B45562A34B6CC34A19CFAFC2F88F96' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `sweet`.* TO 'hu'@'localhost'                                     |
+-----------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

撤销用户权限:REVOKE  权限类型  on  数据库.*  from  用户@本机

MariaDB [(none)]> REVOKE  DELETE on sweet.*  from hu@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> REVOKE  update  on sweet.*  from hu@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> REVOKE  INSERT  on sweet.*  from hu@localhost;
Query OK, 0 rows affected (0.00 sec)

此时hu用户对于数据库没有任何权限,所以不能进行任何操作。

七、数据库的备份

备份所有数据库:mysqldump -uroot -p密码   --all-database


............................................此处省略

备份数据库里的框架,并不备份数据库里的数据:mysqldump -uroot -p密码  --all-database  --no-data


备份root用户下的sweet数据库:mysqldump -uroot -plee sweet

如下图所示

[root@localhost ~]# mysqldump -uroot -plee  sweet
-- MySQL dump 10.14  Distrib 5.5.35-MariaDB, for Linux (x86_64)
--
-- Host: localhost    Database: sweet
-- ------------------------------------------------------
-- Server version    5.5.35-MariaDB

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `dianlu02`
--

DROP TABLE IF EXISTS `dianlu02`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `dianlu02` (
  `姓名` varchar(10) NOT NULL,
  `年龄` varchar(10) NOT NULL,
  `身高` varchar(10) NOT NULL,
  `体重` varchar(10) NOT NULL,
  `体育成绩` varchar(10) NOT NULL

.....................................此处省略

-- Dump completed on 2018-05-28 10:10:55

备份root用户下的sweet数据库到/mnt/下的sweet.sql:mysqldump -uroot -plee sweet  > /mnt/sweet.sql

由下图我们可以看出:ls /mnt/ 查看/mnt有备份数据sweet.sql

[root@localhost ~]# mysqldump -uroot -plee  sweet > /mnt/sweet.sql
[root@localhost ~]# ls /mnt/

sweet.sql

卸载数据库sweet:mysql -uroot -plee  -e "drop database 数据库名称"

[root@localhost ~]# mysql  -uroot -plee  -e "drop database sweet;"

查看数据库是否删除,由下图可以看出,数据库sweet已经被删除 :mysql -uroot -plee -e  "show databases;"

[root@localhost ~]# mysql  -uroot -plee  -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kuaiji             |
| mysql              |
| performance_schema |
+--------------------+

第一种方式恢复已经删除sweet数据库

如果恢复数据库的这条命令没有数据库的名称,就必须在备份的数据库文件中添加配置文件信息

(CREATE DATABASE 数据库的名称  #创建数据库

    USE 数据库的名称  #选择数据库)

编辑sweet数据库的文件:vim /mnt/sweet.sql

[root@localhost ~]# vim /mnt/sweet.sql

 21 CREATE DATABASE  sweet;

 22 USE sweet;

恢复数据库sweet:mysql -uroot -plee  < /mnt/sweet.sql

[root@localhost ~]# mysql -uroot -plee  < /mnt/sweet.sql

查看数据库是否已经恢复:mysql -uroot -plee -e "show databases;"

由下图可以看出数据库sweet已经恢复。

[root@localhost ~]# mysql -uroot -plee -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kuaiji             |
| mysql              |
| performance_schema |
| sweet              |
+--------------------+

查看sweet数据库的dianlu02表:mysql -uroot -plee -e "select * from  数据库的名称.表的名称"

[root@localhost ~]# mysql -uroot -plee -e "select * from sweet.dianlu02;"
+----------+--------+--------+--------+--------------+
| 姓名     | 年龄   | 身高   | 体重   | 体育成绩     |
+----------+--------+--------+--------+--------------+
| zhangsan | 35     | 1.60   | 40     | 80           |
+----------+--------+--------+--------+--------------+

卸载数据库sweet:mysql  -uroot -plee  -e "drop database sweet;"

[root@localhost ~]# mysql  -uroot -plee  -e "drop database sweet;"

查看数据库是否被删除

查询数据库的表信息:mysql -uroot -plee -e "select * from sweet.dianlu02;

由下图可以看出数据库sweet已经被删除

[root@localhost ~]# mysql -uroot -plee -e "select * from sweet.dianlu02;"
ERROR 1146 (42S02) at line 1: Table 'sweet.dianlu02' doesn't exist

第二种方式:恢复已经删除的数据库sweet,将sweet.sql文件里刚写入的东西注释掉,在命令行中应该创建sweet数据库,然后在恢复i数据库,此时恢复数据库时需要加上数据库的名称。

编辑数据库文件:vim /mnt/sweet.sql

[root@localhost ~]# vim /mnt/sweet.sql

21 /*CREATE DATABASE  sweet;
 22 /*USE sweet;

创建数据库sweet:mysql -uroot -plee -e  "CREATE DATABASE sweet;"

[root@localhost ~]# mysql -uroot -plee -e  "CREATE DATABASE sweet;"

恢复数据库:mysql -uroot -plee sweet  < /mnt/sweet.sql

[root@localhost ~]# mysql -uroot -plee sweet  < /mnt/sweet.sql

显示数据库是否被恢复:mysql -uroot -plee -e "show databases;"

由下图可以看出,数据库sweet已经恢复。

[root@localhost ~]# mysql -uroot -plee -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kuaiji             |
| mysql              |
| performance_schema |
| sweet              |
+--------------------+













猜你喜欢

转载自blog.csdn.net/dhjibk/article/details/80465783
今日推荐