zoukankan      html  css  js  c++  java
  • RH358学习笔记--7(配置MariaDB SQL学习)

    一、MariaDB数据库

    (1)描述关系数据库的重要性
    关系数据库将结构化数据存储在一组相互关联的信息表中。这意味着一个表中的信息可以很容易地与另一个表中的信息相结合,以处理和提供关于该数据的报告,可能只使用每个表中选定的数据子集。
    关系数据库管理系统relational database management system (RDBMS)是用来管理关系数据库的软件。大多数关系数据库管理系统允许使用Structured Query Language结构化查询语言(SQL)来查找和管理数据库中的数据。

    Red Hat中包含了许多关系数据库管理系统Enterprise Linux 8。最常用的三个选项是MariaDB、MySQL和PostqreSQL。

    yum module list命令列出AppStream中的所有模块,

    [root@servera ~]# yum module list mariadb

    (2)MariaDB的安全化安装

    新的MariaDB服务的默认配置可能有一个测试数据库和一些不太安全的配置设置。运行mysql_secure_installation来配置更安全的默认值。

    [root@servera ~]# mysql_secure_installation

    这个交互式脚本提示进行某些更改,包括:
     设置root帐户的密码。
     删除可以从本地主机外部访问的根帐户。
     删除匿名用户账户。
     删除用于演示的test数据库(如果存在的话)。

    (3)MariaDB的连接管理

    MariaDB客户端可以通过两种方式连接到服务器。

    限制MariaDB将使用哪个网络地址,您需要编辑MariaDB配置。它的主要配置文件是/etc/my.cnf,但该文件自动包含/etc/my.conf.d目录中的所有文件作为配置文件的一部分。您可以通过向/etc/my.cnf.d/mariadb-server.cnf文件的[mysqld]部分添加指令来调整服务器的网络设置。
    bind-address

    这个指令指定了MariaDB用来监听客户端连接的网络地址。
    只能输入一个选项。可能的选项包括:
    单个IPv4地址
    单个IPv6地址。
    ::连接到所有可用地址(IPv6和IPv4)。
    所有IPv4地址保留为空(或设置为0.0.0.0)。

    如果希望本地客户端能够使用网络连接而不允许远程访问MariaDB,则可以使用127.0.0.1或::1作为网络地址。
    重要:只能使用一个绑定地址表项。在一个有多个地址的系统上,你可以使用这个指令来选择所有地址或一个地址,但不是几个地址。

    skip-networking
    如果在配置文件的[mysqld]部分设置了skip-networking或skip-networking=1,则组网被禁用,客户端必须使用socket文件与MariaDB通信。这限制了对与MariaDB相同系统上的客户机的访问。

    skip-networking=o(如果没有设置则为默认值),MariaDB将监听网络连接。

    port
    可以使用这个设置来指定一个网络端口而不是3306/TCP。

    Mariadb server服务器的使用安装

    安装:

     [root@servera ~]# yum -y install mariadb-server

    启动:
    [root@servera ~]# systemctl enable --now mariadb

    查看运行情况:

    [root@servera ~]# systemctl enable --now mariadb

    使用skip-networking=1指令只监听本地客户端:

    [root@servera ~]# vim /etc/my.cnf.d/mariadb-server.cnf

     重启:

    [root@servera ~]# systemctl restart mariadb

    确认Mariadb守护进程mysqld不再监听所有接口:

    [root@servera ~]# ss -tulpn |grep mysqld

     使用mysql_secure_installation命令保护MariaDB 服务

    [root@servera ~]# mysql_secure_installation

    二、使用MariaDB数据库

    DESCRIBE语句提供了关于表数据必须如何结构化的信息。

    MariaDB [mysql]> describe user;

     

     MariaDB [mysql]> SELECT Host,User,Password FROM user;

     三、管理MariaDB用户和访问权限

    MariaDB将其用户及其密码与本地系统的用户和密码分开。这意味着MariaDB数据库用户与服务器的Linux用户不同,即使用户帐户具有相同的名称,默认情况下,密码将分别跟踪。

    创建新用户需要具备以下其中一个权限级别:
     MariaDB root用户。
     是一个被授予全局CREATE user权限的用户。
     是一个被授予mysql数据库的INSERT权限的用户。

    MariaDB [(none)]> CREATE USER mobius@localhost IDENTIFIED BY 'redhat' ;
     该帐户可以用来连接的用户名/主机名。
     该帐号的密码。
    注意:如果没有提供主机名,用户可从任何主机获得访问权限。

    控制用户权限
    默认情况下,新帐户被授予最低权限。在不授予额外特权的情况下,mobius用户可以访问最小的帐户信息,但大多数其他操作都被拒绝。

    在下面的例子中,允许访问:
    [user@host ~]$ mysql -u mobius -p
    Enter password: redhat
    MariaDB [(none)]> SELECT USER();

    MariaDB [(none)]> SHOW DATABASES;

    特权是按其详细范围组织的。
     全局权限(例如CREATE USER)用于管理MariaDB数据库服务器本身。
     数据库特权(如CREATE Database)用于在MariaDB服务器上创建数据库和使用数据库。
     表特权(比如CRUD命令)用于在特定数据库中创建表和操作数据。
     列特权用于授予类似于表的命令使用,但是在特定的列上(通常很少)。
     其他更细粒度的特权将在本节末尾引用的MariaDB文档中详细讨论。

    MariaDB [(inventory)]> GRANT SELECT, UPDATE, DELETE, INSERT
    -> ON inventory.category
    -> TO mobius@localhost ;
    Query OK, 0 rows affected (0.00 sec)

    确认mobius用户的权限如下:
    [user@host ~]$ mysql -u mobius -p
    Enter password: redhat
    MariaDB [(none)]> USE inventory;
    MariaDB [(inventory)]> SELECT * FROM category;

    GRANT操作的例子

     连接的用户必须具有GRANT OPTION权限,并且具有正在被撤销的权限以撤销权限。
    MariaDB [(none)]> REVOKE SELECT, UPDATE, DELETE, INSERT
    -> ON inventory.category FROM mobius@localhost ;

    删除用户帐号
    当您不再需要一个特定的用户帐户时,可以使用DROP USER从数据库中删除它。username应该使用与CREATE USER相同的'user'@'host'格式。
    MariaDB [(none)]> DROP USER mobius;

    数据库访问的故障诊断
    下表总结了用户在身份验证和访问方面可能遇到的一些问题以及可能的原因。

     四、创建和恢复MariaDB备份

    有两种方式备份MariaDB:
     逻辑备份,将信息导出为文本文件,其中包含重建数据库所需的SQL命令。
     物理备份,它复制包含数据库内容的原始数据库目录和文件。
    每种备份都有其优缺点。

    使用mysqldump命令执行逻辑备份:
    [root@host ~]# mysqldump -u root -p inventory > /backup/inventory.dump

    [root@host ~]# mysqldump -u root -p --all-databases > /backup/mariadb.dump

    逻辑备份的有用选项:

    执行物理备份
    mariabackup工具是由AppStream存储库中的mariadb-backup包提供的。mariabackup工具对MariaDB服务器执行完全物理在线备份。

    确保安装了mariadb-backup包(安装mariadb-server包时默认安装):
    [root@host ~]# yum install mariadb-backup
    创建存放备份文件的目标目录。如果是全量备份,则目标目录必须为空。
    [root@host ~]# mkdir -p /var/mariadb/backup/

    执行备份:
    [root@host ~]# mariabackup --backup --target-dir /var/mariadb/backup/ --user root --password redhat

     确认备份目录内容:
    [root@host ~]# ls -F /var/mariadb/backup/

    注意:在命令行上会公开用户名和密码,另一种替代方法是在/etc/my.cnf.d目录中创建一个凭据文件,以存储执行备份的用户的身份验证信息。
    [root@host ~]# cat /etc/my.cnf.d/mariabackup.cnf

    [xtrabackup]
    user=root
    password=redhat

    恢复逻辑备份
    使用mysql命令从备份文件执行逻辑恢复:
    [root@host ~]# mysql -u root -p inventory < /backup/mariadb.dump
    选择要恢复的数据库 备份文件

    恢复物理备份
    使用mariabackup工具与以下选项之一执行从备份的物理恢复:
    --copy-back 保留原有备份文件。
    --move-back将备份文件移动到数据目录下,然后删除原有的备份文件。
    确保mariadb服务已停止:
    [root@host ~]# systemctl stop mariadb

    确定数据目录的位置,并确保它为空:
    [root@host ~]# grep '^datadir' /etc/my.cnf.d/mariadb-server.cnf
    datadir=/var/lib/mysql
    [root@host ~]# rm -rf /var/lib/mysql/*

    使用mariabackup恢复备份文件:
    [root@host ~]# mariabackup --copy-back --target-dir=/var/mariadb/backup/

    确保数据文件的用户和组所有权设置为mysql:
    [root@host ~]# chown -R mysql:mysql /var/lib/mysql/
    启动mariadb服务:
    [root@host ~]# systemctl start mariadb

     五、自动化部署MariaDB

    安装MariaDB服务器
    使用yum Ansible模块安装mariadb-server包。mariadb-server包包含必要的客户机软件。
    - name: Install mariadb-server package
    yum:
    name: mariadb-server
    state: present

    - name: Use MariaDB 10.3 AppStream module
    dnf:
    name: '@mariadb:10.3/server'
    state: present

    - name: Enable and start mariadb
    service:
    name: mariadb
    state: started
    enabled: yes

    使用Ansible firewalld模块打开MariaDB数据库服务器的端口。
    - name: Firewall permits mysql service
    firewalld:

    service: mysql
    permanent: true
    state: enabled
    immediate: yes

    安装MariaDB客户端
    使用yum Ansible模块安装mariadb包,安装客户端而不使用server。

    - name: Install mariadb client package
    yum:
    name: mariadb
    state: present

    满足Ansible先决条件:

     更新MariaDB Root帐号:

     第二个剧本任务使用copy Ansible模块将根用户的凭据文件files/my.cnf复制到MariaDB服务器主机上的/root/.my.cnf

     删除匿名用户帐户:

     删除测试数据库:

  • 相关阅读:
    Arbitrage
    Big Event in HDU
    敌兵布阵
    Eddy's picture
    A Walk Through the Forest 最短路径+深搜
    Holding Bin-Laden Captive! 母函数
    Moving Tables 贪心
    Fire Net
    Number Sequence
    Find your present! map
  • 原文地址:https://www.cnblogs.com/yyuuee/p/15126703.html
Copyright © 2011-2022 走看看