Linux中的数据库mariaDB

1.安装数据库

1.MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
2.相对于MySQL最新的版本5.6来说,在性能、功能、管理、NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。

实验
-1-安装mariadb
<1>根据mariadb查找mariadb的相关安装信息

[root@dns-server ~]# yum search mariadb

在这里插入图片描述
<2>根据查找的相关信息安装mariadb软件

[root@dns-server ~]# yum install mariadb-server.x86_64 -y

在这里插入图片描述<3>开启mariadb

[root@dns-server ~]# systemctl start mariadb

在这里插入图片描述
-2-关闭mysql开放接口的功能
<4>查看mysql是否具有对开放接口功能,发现具有

[root@dns-server ~]# netstat -antlupe | grep mysql

在这里插入图片描述
结论:mysql有对外开放接口功能,且接口是3306
<5>进入数据库属性配置文件,并更改数据库的接口的功能,使其生效

[root@dns-server ~]# vim /etc/my.cnf
[root@dns-server ~]# systemctl restart mariadb

在这里插入图片描述
在配置文件中添加如下内容(注意一定要在mysqld中进行添加,否则将无法关闭)

skip-networking=1	##使数据库在互联网中开放的接口的功能是关闭的

在这里插入图片描述
<6>再次查看发现mysql没有对外开放的接口

[root@dns-server ~]# netstat -antlupe | grep mysql

在这里插入图片描述
-3-安全初始化的配置(当数据库起始状态设定信息是不安全的,需要做以下设定)
<7>输入初始化mysql的命令

[root@dns-server ~]# mysql_secure_installation
Enter current password for root (enter for none): 	##输入超级用户的密码,如是第一次登陆,则直接按下回车既可,如果是第二次登陆,输入密码既可
Set root password? [Y/n] 	##设置超级用户的密码,按回车会或Y都可
New password: 	##输入密码
Re-enter new password: 	##再次输入密码
Remove anonymous users? [Y/n] 	##是否允许匿名用户登陆
Disallow root login remotely? [Y/n] 	##是否允许在别的主机上用超级用户登陆
Remove test database and access to it? [Y/n] 	##允许移除库并进入
Reload privilege tables now? [Y/n] 	##允许下载表

在这里插入图片描述
在这里插入图片描述
注意:
1.在这里除了超级用户密码外,都按回车(个人的做法)
2.mysql数据库管理员的root和Linux装好的root是完全无关的
-4-超级用户的登陆
-u是指定用户,-p是写入密码
<8>将用户密码以回显方式登陆(即不显示密码)

[root@dns-server ~]# mysql -uroot -p

在这里插入图片描述
<9>显示用户密码登陆(不建议这样做,因为通过调用命令会看到密码)

[root@dns-server ~]# mysql -uroot -pwestos

在这里插入图片描述

扫描二维码关注公众号,回复: 5615081 查看本文章

2.数据库的管理

(1)建立

SHOW DATABASES; ##列出库
CREATE DATABASE westos; ##建立库
USE westos; ##进入库
CREATE TABLE linux( ##建立表(这样建立的原因是如果出现了错误,它会直接报错错误在第几行,可以加快排错
->username varchar(50) not null, ->password varchar(50) not null ->);
DESC linux;
INSERT INTO linux VALUES(’bai‘,’123‘);##插入指定数据到linux表中
SELECT * FROM linux; ##查询所有字段在linux表中
SELECT username,password from linux; ##查询指定字段在linux表中

实验:
建立
<1>进入数据库

[root@dns-server ~]# mysql -uroot -p

在这里插入图片描述
<2>列出库

MariaDB [(none)]> SHOW DATABASES;

在这里插入图片描述
<3>建立一个名为westos的库

MariaDB [(none)]> CREATE DATABASE westos;

在这里插入图片描述
<4>进入名为westos的库

MariaDB [(none)]> USE westos;

在这里插入图片描述
<5>建立表,添加字段(即表头)

MariaDB [westos]> CREATE TABLE linux(
    -> username varchar(50) not null,
    -> passwd varchar(50) not null
    -> );

在这里插入图片描述
<6>列出表

MariaDB [westos]> SHOW TABLES;

在这里插入图片描述
<7>输出表头及相关信息

MariaDB [westos]> DESC linux;

在这里插入图片描述
<8>插入指定数据到linux表中

MariaDB [westos]> INSERT INTO linux VALUES('bai','211');

在这里插入图片描述
<9>查询所有字段及所对应的信息

MariaDB [westos]> SELECT * FROM linux;

在这里插入图片描述
<10>查询指定字段在linux表中

MariaDB [westos]> SELECT username from linux;

在这里插入图片描述
<11>退出mysql的设置

MariaDB [westos]> QUIT

在这里插入图片描述
(2)更改

UPDATE linux SET password=password(‘bai’) WHERE
username=‘bai’; ##将username为bai的password更改称bai ALTER TABLE linux ADD
class varchar(20); ##在表linux中添加新的字段class(默认将字段添加至最后) ALTER TABLE linux
DROP CLASS; ##将表中的linux删除 ALTER TABLE linux ADD age varchar(20) AFTER
password; ##在password之后添加age字段(在两个字段中间添加字段) ALTER TABLE linux RENAME
redhat; ##尽量不用更改,可能会丢失数据,更改前记得要进行备份
注意:字段不能添加至第一个字段前

实验:
<1>以超级用户身份进入数据库管理,进入westos库中

[root@dns-server ~]# mysql -uroot -p
MariaDB [(none)]> USE westos;

在这里插入图片描述
<2>在表linux中添加class字段及相关配并查询所有字段及相关信息

MariaDB [westos]> ALTER TABLE linux ADD class varchar(20);
MariaDB [westos]> SELECT * FROM linux;

在这里插入图片描述
<3>将class字段删除并查询所有字段及相关信息,会发现表linux中已经没有class字段

MariaDB [westos]> ALTER TABLE linux DROP class;
MariaDB [westos]> SELECT * FROM linux;

在这里插入图片描述
<4>将字段age添加至username字段后并查询所有字段及相关信息

MariaDB [westos]> ALTER TABLE linux ADD age varchar(20) AFTER username;
MariaDB [westos]> SELECT * FROM linux

在这里插入图片描述
<5>插入指定字段(即各个字段对应的内容)到表linux中并查询所有字段及相关信息

MariaDB [westos]> INSERT INTO linux VALUES('wen','236','434');
MariaDB [westos]> SELECT * FROM linux;

在这里插入图片描述
<6>将表linux中username为bai的passwd更改成211并查询所有字段及相关信息

MariaDB [westos]> UPDATE linux SET passwd='211' WHERE username='bai';
MariaDB [westos]> SELECT * FROM linux;

在这里插入图片描述
<7>退出mysql的设置

MariaDB [westos]> QUIT

在这里插入图片描述

(3)
数据库的备份

mysqldump -uroot -pwestos westos > /mnt/westos.sql mysqldump -uroot -pwestos westos --no-data mysqldump -uroot -pwestos --all-database mysqldump -uroot -pwestos --all-database -no-data
恢复方式1 mysql -uroot -pwestos -e “CREATE DATABASE westos;” mysql -uroot -pwestos westos < /mnt/westos.sql
恢复方式2
vim /etc/westos.sql ##在文件中添加如下内容,使其自动执行:
CREATE DATABASE westos; USE westos; mysql -uroot-pwestos < /mnt/westos.sql

实验:
<1>首先进入到mysql的目录下

[root@dns-server mysql]# cd /var/lib/mysql

在这里插入图片描述
<2>备份所有数据库(因为没有指定输出到哪个目录,所以就都显示在终端)

[root@dns-server mysql]# mysqldump -uroot -p --all-database

在这里插入图片描述
<3>备份所有数据库,但只有数据库框架,没有数据

[root@dns-server mysql]# mysqldump -uroot -p --all-database --no-data

在这里插入图片描述
<4>备份westos库框架(没有数据)

[root@dns-server mysql]# mysqldump -uroot -p westos --no-data

在这里插入图片描述
<5>备份westos库(包含数据)到/mnt/westos.sql

[root@dns-server mysql]# mysqldump -uroot -p westos > /mnt/westos.sql

在这里插入图片描述
<6>将westos库进行恢复
恢复方式1:
-1-首先进入mysql对库westos进行删除

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> DROP DATABASE westos;
MariaDB [(none)]> SHOW DATABASES;

在这里插入图片描述
-2-进入之前备份时拥有westos库的文件并进行修改,使其具有自动创建库的功能

[root@dns-server mysql]# vim /mnt/westos.sql

在这里插入图片描述
添加的内容如下:
CREATE DATABASE westos;
USE westos;
在这里插入图片描述
-3-将westos库还原

[root@dns-server mysql]# mysql -uroot -p < /mnt/westos.sql

在这里插入图片描述
-4-以超级用户身份进入数据库进行查看,发现westos库已经存在

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> QUIT

在这里插入图片描述
恢复方式2:
-1-首先进入mysql对库westos进行删除

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> DROP DATABASE westos;
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> QUIT

在这里插入图片描述
-2-进入之前备份时拥有westos库的文件并进行修改,使其不具有自动创建库的功能

[root@dns-server mysql]# vim /mnt/westos.sql

在这里插入图片描述
修改的内容如下:

##CREATE DATABASE westos;
##USE westos;

在这里插入图片描述
-3-先确保库内没有westos库,再利用命令创建库(-e是执行),最后查看库

[root@dns-server mysql]# mysql -uroot -p -e "SHOW DATABASES;"
[root@dns-server mysql]# mysql -uroot -p -e "CREATE DATABASE westos;"
[root@dns-server mysql]# mysql -uroot -p -e "SHOW DATABASES;"

在这里插入图片描述
-4-还原westos库并进行查看

[root@dns-server mysql]# mysql -uroot -p westos< /mnt/westos.sql
[root@dns-server mysql]# mysql -uroot -p -e "SHOW DATABASES;"
[root@dns-server mysql]# mysql -uroot -p -e "SELECT * FROM westos.linux;"	##查看westos库里的内容

在这里插入图片描述
注意:
在数据库中westos.linux相当于在文件中的westos/linux
(4)删除

DELETE FROM linux WHERE username=‘bai’; ##删除表linux中字段为username字段的那一行的信息
DROP TABLE linux;
DROP DATABASE westos;

实验:
<1>删除linux表中字段为username那一行的信息

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SELECT * FROM westos.linux;
MariaDB [(none)]> DELETE FROM westos.linux WHERE username='bai';
MariaDB [(none)]> SELECT * FROM westos.linux;
MariaDB [(none)]> QUIT;

在这里插入图片描述
<2>删除表linux并查看表linux是否被删除

MariaDB [(none)]> DROP TABLE westos.linux;
MariaDB [(none)]> USE westos;
MariaDB [westos]> SHOW TABLES;

在这里插入图片描述
<3>删除库westos并查看库westos是否被删除

MariaDB [(none)]> SHOW DATABASES;
MariaDB [westos]> DROP DATABASE westos;
MariaDB [(none)]> SHOW DATABASES;

在这里插入图片描述
(5)用户授权

CREATE USER bai@‘localhost’ identified by ‘westos’; ##添加用户 GRANT
SELECT,INSERT ON westos.* TO bai@localhost; ##增加用户的选择,插入权限 SHOW GRANTS
FOR bai@localhost; ##查看用户bai的权限 REVOKE INSERT ON westos.* FROMbai@localhost; ##去除用户bai的INSERT权限
DROP USER westos@localhost ##删除用户
FLUSH PRIVILEGES; ##如果更改权限后,一直没有应用,刷新一下,重新打开数据库既可,必须以超级用户的身份刷新

实验:
<1>进入数据库并查看数据库中含有的用户

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SELECT USER FROM mysql.user;

在这里插入图片描述
<2>创建两个用户(一个用户只允许本机登陆,另外一个用户允许所有人登陆),并进行用户的查看

MariaDB [(none)]> CREATE USER bai@'localhost' identified by 'westos';	##只允许本机用户登陆,identified是指输入密码
MariaDB [(none)]> CREATE USER wen@'%' identified by 'westos';	##允许所有人登陆

在这里插入图片描述
<3>以用户bai的身份进入数据库并尝试列出库,发现无法查看到其内容,退出既可

[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> QUIT

在这里插入图片描述
<4>以超级用户root的身份进入数据库并查看用户bai的权限,同时增加用户bai的SELECT权限

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> GRANT SELECT ON westos.* TO bai@localhost;
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> QUIT

在这里插入图片描述
<5>以用户bai的身份尝试列出库并查看字段及相关的内容,发现可以成功查看。但当想要插入字段的相关内容时,回出现权限报错

[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> SELECT * FROM westos.linux;
MariaDB [(none)]> USE westo
MariaDB [westos]> INSERT INTO linux VALUES('wen','218');	##在表linux中添加字段的相关内容
MariaDB [westos]> QUIT

在这里插入图片描述
<6>以超级用户root的身份进入数据库并查看用户bai的权限,同时增加用户bai的INSERT权限

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> GRANT INSERT ON westos.* TO bai@localhost;
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> QUIT

在这里插入图片描述
<7>以用户bai的身份尝试插入字段的相关内容,发现可以成功插入

[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> USE westos;
MariaDB [westos]> INSERT INTO linux VALUES('wen','218');
MariaDB [westos]> SELECT * FROM westos.linux;
MariaDB [westos]> QUIT

在这里插入图片描述
<8>以超级用户的身份进入数据库并删除用户bai的SELECT权限并进行用户bai权限的查看

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> REVOKE SELECT ON westos.* FROM bai@localhost;
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> QUIT

在这里插入图片描述
<9>以用户bai的身份尝试列出库并查看字段及相关的信息,发现无法查看,但依旧可以插入字段的相关内容

[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> SELECT * FROM westos.linux;
MariaDB [(none)]> USE westos;
MariaDB [westos]> INSERT INTO linux VALUES('jia','218');
MariaDB [westos]> quit

在这里插入图片描述
<10>以超级用户的身份进入数据库并删除用户bai的INSERT权限并进行用户bai权限的查看

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> REVOKE SELECT ON westos.* FROM bai@localhost;
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> QUIT

在这里插入图片描述
<11>以用户bai的身份尝试插入字段的相关内容,发现不可以成功插入

[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> USE westos;
MariaDB [westos]> INSERT INTO linux VALUES('heihei','218');
MariaDB [(none)]> QUIT

在这里插入图片描述
<12>删除用户wen并进行查看,确认用户wen被删除

[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SELECT USER FROM mysql.user;
MariaDB [(none)]> DROP USER wen@'%';
MariaDB [(none)]> SELECT USER FROM mysql.user;
MariaDB [(none)]> QUIT

在这里插入图片描述
注意:将select权限去除后,如果还有insert,则可能会看到库,但不能使用select

3.修改数据库的超级用户密码

当超级用户密码没有忘记时:
mysqladmin -uroot -pwestos password bai
当超级用户密码忘记时:
systemctl stop mariadb ##关闭数据库
mysqld_safe --skip-grant-tables &
mysql update mysql.user set Password=password(‘westos’)where Uswe=“root”;
kill -9 mysql的所有进程id systemctl start mariadb

-1-当超级用户密码没有忘记时:
<1>更改超级用户密码为bai

[root@dns-server mysql]# mysqladmin -uroot -pwestos password bai

在这里插入图片描述
<2>试图用更改前的密码和更改后的密码进行登陆数据库,发现密码更改成功

[root@dns-server mysql]# mysql -uroot -pwestos
[root@dns-server mysql]# mysql -uroot -pbai
MariaDB [(none)]> quit

在这里插入图片描述
-2-当超级用户密码忘记时:
<1>首先关闭数据库并跳过授权表并打入后台

[root@dns-server mysql]# systemctl stop mariadb
[root@dns-server mysql]# mysqld_safe --skip-grant-tables &

在这里插入图片描述
<2>直接使用mysql命令,然后更改密码

[root@dns-server mysql]# mysql
MariaDB [(none)]> SELECT * FROM mysql.user;	##密码都放在mysql.user的文件中,所有通过查看这个文件可以查看到密码

在这里插入图片描述
如果使用以下命令,则文件内显示的密码是明文:

MariaDB [(none)]> UPDATE mysql.user SET Password='westos' WHERE User='root';
MariaDB [(none)]> SELECT * FROM mysql.user;

在这里插入图片描述
如果使用以下命令,便可以在文件内看到密码(建议用这种,加密方式是把密码变成加密字符):

MariaDB [(none)]> UPDATE mysql.user SET Password=Password
MariaDB [(none)]> SELECT * FROM mysql.user;

在这里插入图片描述
<3>查看mysql有关的进程id(其中8218是这个命令的进程)

[root@dns-server mysql]# ps aux | grep mysql

在这里插入图片描述
<4>杀死mysql的所有进程

[root@dns-server mysql]# kill -9 8019
[root@dns-server mysql]# kill -9 8174
[root@dns-server mysql]# ps aux | grep mysql

在这里插入图片描述
<5>打开数据库

[root@dns-server mysql]# systemctl start mariadb	##此时mysql是非正常的,所以要重启

在这里插入图片描述
<6>试图用更改前的密码和更改后的密码进行登陆数据库,发现密码更改成功

[root@dns-server mysql]# mysql -uroot -pbai
[root@dns-server mysql]# mysql -uroot -pwestos

在这里插入图片描述

4.使用phpMyAdmin管理MYSQL数据库

<1>首先安装httpd并重启服务

[root@dns-server mnt]# yum install httpd -y
[root@dns-server mnt]# systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
<2>打开网页输入本机的ip地址,发现可以查看到阿帕奇的浏览器
<3>将下载好的安装包(要适合自己的主机)进行解压并放至/var/www/html文件下

[root@dns-server mnt]# tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 -C /var/www/html
[root@dns-server mnt]# cd /var/www/html
[root@dns-server html]# ls

在这里插入图片描述
<4>将安装包的名字更改成简单点的名字并查看,以便于方便利用

[root@dns-server html]# mv phpMyAdmin-3.4.0-all-languages mysqladmin
[root@dns-server html]# ls

在这里插入图片描述
<5>打开网页输入本机的ip地址加文件的绝对目录,可以查看到文件中详细的内容
在这里插入图片描述
<6>点开文件内的index.php(默认发布文件,直接访问便可以查看),发现显示的是代码(并不安全),说明系统中不具备时别php语言的软件
在这里插入图片描述
<7>安装可以识别php语言的软件并重启mariadb

[root@dns-server html]# yum install php-mysql -y
[root@dns-server html]# systemctl restart httpd
[root@dns-server html]# yum install php -y
[root@dns-server html]# systemctl restart httpd
[root@dns-server mysqladmin]# systemctl restart mariadb

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
<8>打开网页输入本机的ip地址加文件的绝对目录,可以查看到一个真正的网页(如果没出来,可以按下ctrl+shift+delete清除缓存既可)
在这里插入图片描述
<9>使用超级用户进行登陆
利用鼠标点击在软件中创建一个名为bai的库,名为test的表,并在表中添加内容
点击如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
<10>在终端利用命令进行查看,发现之前所建立的都可以成功显示

[root@dns-server mysqladmin]# mysql -uroot -p
MariaDB [(none)]> SHOW DATABASES;

在这里插入图片描述

MariaDB [(none)]> USE bai;
MariaDB [bai]> SHOW TABLES;

在这里插入图片描述

MariaDB [bai]> SELECT * FROM bai.test;

在这里插入图片描述
补充:
如果登陆失败
-1-进入mysqladmin目录下,根据模板,创建config.inc.php

[root@dns-server html]# cd mysqladmin
[root@dns-server mysqladmin]# cp config.sample.inc.php config.inc.php

在这里插入图片描述
-2-查找$cfg[‘blowfish_scret’]的值

[root@dns-server mysqladmin]# vim README	##在文件中可以看到如果要查看更多消息,进入Documentation.txt文件
[root@dns-server mysqladmin]# vim Documentation.txt

在这里插入图片描述
查看README中的引导:
在这里插入图片描述
Documentation.txt中的值:在这里插入图片描述

-3-将查找到的值写进文件中并使其httpd和mariadb重新生效,便可以成功登陆

[root@dns-server mysqladmin]# vim config.inc.php
[root@dns-server mysqladmin]# systemctl restart httpd
[root@dns-server mysqladmin]# systemctl restart mariadb

在这里插入图片描述
config.inc.php文件中的添加的值如下:
在这里插入图片描述
总的总结:
1.oracle最稳定的数据库(核心数据中心用的都是他)电脑单核是1倍的价钱,双核是2倍的价钱,四核是4倍的价钱
2.表->许多张表叫库->许多库叫数据库软件
3.linux中一般用mariadb
4.每个命令都必须用分号结尾(用大写写比较专业,小写写也可以,所有的数据库大写是通用的,小写有些不适用
5.表相当于文件,库相当于目录
6.值要用引号括起来
7.表的名称数据库的名称最好不要更改

猜你喜欢

转载自blog.csdn.net/qq_39376481/article/details/88586114