数据库mariaDB的搭建和管理

    xiaoxiao2022-07-02  99

    一:mariaDB的概念

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

    与 MySQL 相比较,MariaDB 更强的地方在于:

    Maria 存储引擎 PBXT 存储引擎 XtraDB 存储引擎 FederatedX 存储引擎 更快的复制查询处理 线程池 更少的警告和bug 运行速度更快 更多的 Extensions (More index parts, new startup options etc) 更好的功能测试 数据表消除 慢查询日志的扩展统计 支持对 Unicode 的排序

    二:mariaDB的搭建

    前提:

    <1>在搭建数据库之前,为了保持实验环境的纯净,我们需要将虚拟机重置。 <2>将虚拟机主机名改为mysql.westos.com,方便识别 <3>设置ipv4地址 <4>搭建yum源 <5>将虚拟机的图形界面转变为纯文本界面,节省内存 <6>在真机里ssh连接(最后两步看个人意愿)

    实验开始:

    <1>搜寻mariadb的安装包,并且安装

    yum search mariadb yum install mariadb-server.x86_64 -y

    安装完成 <2>启动服务,并进入数据库

    systemctl start mariadb systemctl enable mariadb

    此时可以直接进入数据库,但是这种方式是不安全的

    为了使数据库更加安全,我们需要进行以下操作

    <3>关闭接口,安全初始化。

    netstat -antlupe | grep mysql 查看mysql开放接口的功能是否开启 vim /etc/my.cnf 在配置文件里,关闭网络接口 在里面写入 skip-networking=1

    重启服务,发现端口关闭

    mysql_secure_installation 安全初始化,因为数据库的起始状态信息是不安全的

    <4>登陆数据库

    mysql -uroot -pwestos (登陆密码westos,不推荐使用,因为密码裸露着) mysql -uroot -p (推荐使用)

    三:数据库的管理

    注意,数据库里的;表示命令结束,而且在数据库里输入的字符只能是英文字符

    <1>查询库,进入库以及查询表

    SHOW DATABASES; 列出库 USE DATABASES; 进入库 比如: USE mysql; (在进入库里的时候;可加可不加)

    SHOW TABLES 列出库里面的表

    SELECT * FROM user; 查询user表里面全部字段,在数据库里面,把一列叫做字段 SELECT Host,User FROM user; 查询user这个表里的host,user字段的信息 WHERE可以跟定查询条件 SELECT Host,User FROM user WHERE User='root'; 查询User=root的host,user字段的信息 SELECT Host,User FROM user WHERE Host='127.0.0.1';

    <2>建立库以及表和表的结构/字段

    CREATE DATABASE westos;(库的名字自定义,这个库可以在库是none的时候建立,也可以在你的位置是别的库里面建立,是平行的) CREATE TABLE userlist ( -> username varchar(50) not null, -> password varchar(100)not null -> ); (创建一个表,表名是userlist,表里面的结构/字段是什么) DESC userlist; (查询userlist表的结构) SELECT * FROM userlist; (此时没有完善表的信息,所以为0)

    表创建好了 补充: char(5)字符必须是五个,定长字符。 varchar(5)五个及五个之内,可变长字符。

    <3>插入字段的数据

    此时的表里并没有数据与字段

    INSERT INTO userlist VALUES ('lee','123'); (插入数据在表里,username是lee,passwd是123,把表的信息完善,注意几个字段就要填写几个数据) INSERT INTO userlist VALUES ('hhh','987'); SELECT * FROM userlist; (可以查询到表的信息)

    <4>更改

    注意: <1>数据库与数据库里的名字不能随便更改,因为一个库会连着另一个库,若是随意更改会导致库与库之间可能查找不到,而随意更改库里的表名,可能会造成数据的丢失 <2>数据库以目录的形式存在 <3>可以更改这个库的目录达到更改这个库名,但是不推荐,因为不安全

    更改表名

    ALTER TABLE userlist RENAME userlinux;(更改userlist表的名字为userliunx) ALTER TABLE user_list RENAME userredhat;

    给表中添加字段以及修改字段的值

    DESC userlist; (查看结构) SELECT * FROM userlist; (查询表的信息) ALTER TABLE userlist ADD age varchar(5) AFTER username; 在username字段后面添加一个age字段,长度为5 ALTER TABLE userlist ADD age varchar(5); 添加一个age字段,长度为5 UPDATE userlist SET age='12'; 默认这个表里的所有人年龄都是12 UPDATE userlist SET age='12'WHERE username='lee'; 只有lee这个用户的年纪为12

    SELECT * FROM userlinux; (查询表的信息)

    <5>删除(建议做这个实验前先备份,数据库的备份在删除后面讲解)

    DESC userlist; (查看结构) SELECT * FROM userlist; (查询表的信息) ALTER TABLE userlist DROP age; 删除这个表里age这个字段 DELETE FROM userlist WHERE username='lee'; 删除userlist表中lee这个用户的信息 DELETE FROM userlist WHERE username='lee' or username='lee1' ; 删除userlist表中lee和lee1的信息 DELETE FROM userlist WHERE username='hhh' AND age='15'; 一个表中有多个hhh,为了防止删错,可以加上别的条件,比如年龄 DROP TABLE userlist; 删除表 DROP DATABASE westos; 删除库

    删除字段 删除字段信息

    删除表

    删除数据库

    <6>数据库的备份

    mysqldump -uroot -pwestos westos > /mnt/westos.sql 将westos这个库备份到/mnt下 mysqldump -uroot -pwestos westos --no-data 只备份westos库的结构,不要数据 mysqldump -uroot -pwestos --all-database 备份所有库 mysqldump -uroot -pwestos --all-database -no-data 备份所有数据库,只要结构,不要数据 恢复方式1 mysql -uroot -pwestos -e “CREATE DATABASE westos;” 建立一个westos数据库 mysql -uroot -pwestos westos < /mnt/westos.sql 将数据重新导回去 恢复方式2 vim /mnt/westos.sql 在数据库的数据文件里面写入 ##在文件中添加如下内容,使其自动执行: CREATE DATABASE westos; 建立一个westos数据库 USE westos; 进去库 然后再去执行命令 mysql -uroot-pwestos < /mnt/westos.sql 将数据重新导回去

    实验如下:

    第一种方法:

    先备份: 删除库

    为了下一个实验环境纯净,我们将这个数据库删除

    第二种恢复方法:

    四:数据库的用户授权

    在平时管理数据库中,我们需要不同的数据库用户有着不同的权限,比如可以在什么主机上登陆数据库以及对不同数据库进行的操作,为了解决这个问题,我们需要对数据库进行用户授权。

    实验前提:

    <1>打开网络接口

    vim /etc/my.cnf 把端口那一行注释掉 systemctl restart mariadb netatat -antlupe | grep mysql

    <2>关闭防火墙

    systemcyl stop firewalld

    实验如下:

    SELECT Host,User FROM mysql.user; 查看数据库里的用户登陆方式,localHost表示只能本机登陆数据库,%表示可以在任何主机登陆

    CREATE USER hhh@'localhost' identified by 'westos'; 创建一个只能本机登陆数据库的用户hhh,并且登陆密码是westos CREATE USER lee@'%' identified by 'westos'; 创建一个任何主机都能登陆数据库的用户lee,并且登陆密码是westos

    测试:

    在另一台ip为172.25.254.215的虚拟机里,搜寻并安装可以执行mysql命令,登陆数据库的软件

    安装完成

    在另一台主机上发现lee能登陆上数据库,hhh被拒绝 在本机上面测试,发现都能登陆上

    但是我们发现,即使登陆上了,也看不到东西,这是因为我们没有查询的权力,如图所示:

    为了解决这个问题,我们需要给用户授权。

    用户授权实验如下

    SHOW GRANTS FOR hhh@localhost; 查看hhh这个本机登陆用户的权限 GRANT SELECT,INSERT on westos.* TO hhh@localhost; 给hhh一个查询,插入westos库以及库里面内容的权力 REVOKE SELECT,INSERT on westos.* FROM hhh@localhost; 删除hhh查询,插入westos库以及库里面内容的权力 DROP USER hhh@localhost 删除hhh这个本机登陆用户

    任何主机登陆用户授权 测试:

    本地登陆用户hhh的授权

    如图所示看不见

    授权查询和插入的权力 可以查询到

    可以插入 删除权限 查看并删除这个本机登陆数据库的用户

    五:修改数据库的密码

    第一种方法:

    mysqladmin -uroot -pwestos password lee 将密码westos改为lee,但是这种方法把密码在名面显现出来了,安全系数低 而且这个修改密码的方法不能修改普通用户,因为修改密码是对mysql里面的user进行操作,所以普通用户去改会被拒绝,只能进入库里用UPDATE修改

    第二种方法:

    systemctl status mariadb systemctl stop mariadb 关闭服务 mysqld_safe --skip-grant-tables & 跳过数据库安全授权,此时授权是开放的,因为会占用终端,所以就用&在后台运行 mysql 此时可以直接进入 USE mysql SELECT * FROM user; UPDATE user set Password='westos' WHERE User='root'; 设定密码 SELECT * FROM user; 此时密码是显现出来的,不安全 UPDATE user set Password=password('westos') WHERE User='root'; 设定密码,给密码加密 SELECT * FROM user; 此时密码是加密的,安全 quit退出

    然后再执行以下操作

    fg 将后台进程调用到前端 killall -9 mysql_safe 杀死mysal_safe的全部进程 pa aux | grep mysql kill -9 进程号 ps aux | grep mysql systemctl start mariadb mysql -uroot -pwestos 修改成功

    如图所示:

    五:使用phpMyAdmin管理MYSQL数据库

    使用phpMyAdmin管理MYSQL数据库,更加方便快捷

    实验如下:

    yum install httpd -y

    systemctl start httpd

    cd /var/www/html/ ls 此时这个目录里面并没有东西

    将php压缩包上传到这个目录 再去ls查看

    tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 解压 mv phpMyAdmin-3.4.0-all-languages/ mysqladmin 重命名

    cd mysqladmin 进入并查看这个包里面的内容 ls

    yum search php yum install php-mysql.x86_64 php.x86_64 -y

    systemctl restart httpd 重启服务 cd /etc/httpd/conf.d/ httpd的子配置目录 ls 会看到一个php.conf

    php -m 查看是否连接到mysql

    cp config.sample.inc.php config.inc.php 复制一个模版文件config.inc.php less Documentation.txt 查看步骤

    vim config.inc.php 编辑复制过来的模版文件

    在里面修改为以下内容

    systemctl restart httpd

    测试:

    在浏览器里输入172.25.254.115/mysqladmin,就会出现以下界面

    输入帐号密码 就会进入以下界面

    我们可以利用php对数据库进行管理,例如删除 用 mysql -uroot -p查看

    新建一个用户llll,密码是963

    用 mysql -uroot -p查看

    最新回复(0)