zoukankan      html  css  js  c++  java
  • MariaDB数据库管理系统

      MYSQL数据库管理系统被Oracle公司收购后从开源换向到了封闭,导致许多Linux发行版选择了MariaDB。
     
      MYSQL是一款大家都非常熟知的数据库管理系统,技术成熟、配置简单、开源免费并且有良好的扩展性,但是MYSQL在被Oracle公司收购后日渐陷入从开源转变为了封闭,缓慢的更新让众多Linux发行版(如:RHEL7、Fedora、Centos、OpenSUSE、Slackware等等)以及诸多已经决定放弃使用这个往日最具人气的数据库管理系统,而转向到了MariaDB。
     
      MariaDB是MYSQL数据库管理系统的一个由开源社区维护的分支产品,完全兼容于MYSQL,坦白讲虽然Google与Wikipedia这样的行业巨头已经采用了MariaDB,但并不意味着会比MYSQL有明显的性能提升,而是从技术垄断角度作出的决定。
     
    特点:
    MariaDB相对于MYSQL来讲确实在功能上有很多扩展特性,比如微秒的支持、线程池、子查询优化、组提交、进度报告等。

    一、安装mariaDB

    1、更换国内yum源

    [root@template] mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    [root@template]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    2、安装mariadb

    [root@template yum.repos.d]# yum install mariadb mariadb-server -y

    3、启动mariadb服务程序并添加到开机启动项中

    [root@template yum.repos.d]# systemctl start mariadb
    
    [root@template yum.repos.d]# systemctl enable mariadb
    Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

    4、为了保证数据库的安全性,一定要进行初始化工作

    第1步:设定root用户密码。
    第2步:删除匿名帐号。
    第3步:禁止root用户从远程登录。
    第4步:删除test数据库并取消对其的访问权限。
    第5步:刷新授权表,让初始化后的设定立即生效。

    5、初始化数据库服务

    [root@template ~]# mysql_secure_installation 
    /usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
    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: 输入要为root用户设置的数据库密码。
    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(删除匿名帐号)
     ... 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(禁止root用户从远程登录)
     ... 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数据库并取消对其的访问权限)
     - 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.
    Thanks for using MariaDB!

    设置防火墙对数据库服务的允许策略:

    [root@linuxprobe ~]# firewall-cmd --permanent --add-service=mysql
    success
    [root@linuxprobe ~]# firewall-cmd --reload
    success

    使用root用户登录到数据库中:

    
    

     MariaDB [(none)]> show databases;
     +--------------------+
     | Database |
     +--------------------+
     | information_schema |
     | mysql |
     | performance_schema |
     +--------------------+
     3 rows in set (0.00 sec)


    MariaDB [(none)]> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [mysql]> show tables; +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | event | | func | | general_log | | help_category | | help_keyword | | help_relation | | help_topic | | host | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | servers | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 24 rows in set (0.00 sec)

     MariaDB [mysql]> select host,user from user;
     +-----------+------+
     | host | user |
     +-----------+------+
     | 127.0.0.1 | root |
     | ::1 | root |
     | localhost | root |
     +-----------+------+
     3 rows in set (0.00 sec)

    MariaDB [mysql]> drop user 'root'@'::1';
    Query OK, 0 rows affected (0.00 sec)

    MariaDB [mysql]> select host,user from user;
    +-----------+--------+
    | host | user |
    +-----------+--------+
    | 127.0.0.1 | root |
    | localhost | root |
    +-----------+--------+
    3 rows in set (0.00 sec)

    6、修改当前用户在数据库中的密码(示例中的密码为nulige)

    MariaDB [(none)]> set password = password('nulige');
    Query OK, 0 rows affected (0.00 sec)
    MariaDB [(none)]> exit
    Bye
    

    二、创建用户并授权

    数据库GRANT命令的授权操作常用方案:

    命令 作用
    GRANT 权限 ON 数据库.表单名称 TO 用户名@主机名 对某个特定数据库中的特定表单给予授权。
    GRANT 权限 ON 数据库.* TO 用户名@主机名 对某个特定数据库中的所有表单给予授权。
    GRANT 权限 ON *.* TO 用户名@主机名 对所有数据库及所有表单给予授权。
    GRANT 权限1,权限2 ON 数据库.* TO 用户名@主机名 对某个数据库中的所有表单给予多个授权。
    GRANT ALL PRIVILEGES ON *.* TO 用户名@主机名 对所有数据库及所有表单给予全部授权,(谨慎操作)。

    1、创建一个新的数据库用户:

    创建数据库用户的命令:CREATE USER 用户名@主机名 IDENTIFIED BY '密码';

    MariaDB [mysql]> create user nulige@localhost IDENTIFIED BY 'oldboy123'; Query OK, 0 rows affected (0.00 sec)

    #给用户授权

    MariaDB [(none)]> GRANT SELECT,UPDATE,DELETE,INSERT on mysql.user to nulige@localhost;
    Query OK, 0 rows affected (0.01 sec)

    MariaDB [(none)]> show grants for nulige@localhost;
    +---------------------------------------------------------------------------------------------------------------+
    | Grants for nulige@localhost |
    +---------------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'nulige'@'localhost' IDENTIFIED BY PASSWORD '*FE28814B4A8B3309DAC6ED7D3237ADED6DA1E515' |
    | GRANT SELECT, INSERT, UPDATE, DELETE ON `mysql`.`user` TO 'nulige'@'localhost' |
    +---------------------------------------------------------------------------------------------------------------+
    2 rows in set (0.00 sec)

    三、创建数据库与表单

    常用的数据库表单管理命令有:

    用法 作用
    CREATE database 数据库名称。 创建新的数据库。
    DESCRIBE 表单名称; 描述表单。
    UPDATE 表单名称 SET attribute=新值 WHERE attribute > 原始值; 更新表单中的数据。
    USE 数据库名称; 指定使用的数据库。
    SHOW databases; 显示当前已有的数据库。
    SHOW tables; 显示当前数据库中的表单。
    SELECT * FROM 表单名称; 从表单中选中某个记录值。
    DELETE FROM 表单名 WHERE attribute=值; 从表单中删除某个记录值。

    #创建数据库
    MariaDB [(none)]> create database crm character set=utf8;
    Query OK, 1 row affected (0.00 sec)
    
    #查看数据库
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | crm                |
    | mysql              |
    | performance_schema |
    +--------------------+
    4 rows in set (0.00 sec)
    
    #进入crm
    MariaDB [(none)]> use crm
    Database changed
    
    #创建表,表名book
    MariaDB [crm]> create table book (name char(20),price int,pages int);
    Query OK, 0 rows affected (0.01 sec)
    
    MariaDB [crm]> desc book;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | name  | char(20) | YES  |     | NULL    |       |
    | price | int(11)  | YES  |     | NULL    |       |
    | pages | int(11)  | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    
    #插入数据
    MariaDB [crm]> INSERT INTO book(name,price,pages) VALUES('python','60',518);
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [crm]> INSERT INTO book(name,price,pages) VALUES('linux','48',618);
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [crm]> INSERT INTO book(name,price,pages) VALUES('go','78',818);
    Query OK, 1 row affected (0.00 sec)
    
    #更新数据
    MariaDB [crm]> update book set price=55;
    Query OK, 2 rows affected (0.01 sec)
    Rows matched: 2  Changed: 2  Warnings: 0
    
    #查看表中内容
    MariaDB [crm]> select * from book;
    +--------+-------+-------+
    | name   | price | pages |
    +--------+-------+-------+
    | python |    60 |   518 |
    | linux  |    48 |   618 |
    | go     |    78 |   818 |
    +--------+-------+-------+
    3 rows in set (0.00 sec)
    
    #清空book表中内容
    MariaDB [crm]> delete from book;
    Query OK, 2 rows affected (0.00 sec)
    
    #查看删除结果
    MariaDB [crm]> select * from book;
    Empty set (0.00 sec)

    #删除数据库

      MariaDB [(none)]> drop database crm;
      Query OK, 0 rows affected (0.00 sec)

    where命令用于在数据库匹配查询的条件,可用的条件有:

    参数 作用
    = 相等。
    <>或!= 不相等。
    > 大于。
    < 小于。
    >= 大于或等于。
    <= 小于或等于。
    BETWEEN 在某个范围内。
    LIKE 搜索一个例子。
    IN 在列中搜索多个值。

    查看价格大于75元的书籍:
    MariaDB [crm]> select * from book where price>75;
    +------+-------+-------+
    | name | price | pages |
    +------+-------+-------+
    | go   |    78 |   818 |
    +------+-------+-------+
    1 row in set (0.00 sec)
    
    搜索价格不等于60元的书籍:
    MariaDB [crm]> select * from book where price!=60;
    +-------+-------+-------+
    | name  | price | pages |
    +-------+-------+-------+
    | linux |    48 |   618 |
    | go    |    78 |   818 |
    +-------+-------+-------+
    2 rows in set (0.01 sec)

     四、数据库的备份与恢复

    mysqldump命令用于备份数据库数据,格式为:“mysqldump [参数] [数据库名称]”。

    参数 作用
    -u 数据库的用户名称。
    -p 密码提示符。
    --no-data 指备份数据库的描述结构,而不要数据。
    --lock-all-tables

    备份完成后将不再允许修改数据。

    1、备份前,先查看数据库名

    #查看数据库
    MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | crm | | mysql | | performance_schema | +--------------------+ 4 rows in set (0.00 sec)
    #进入crm库 MariaDB [(none)]> use crm Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
    #查看表 MariaDB [crm]> show tables; +---------------+ | Tables_in_crm | +---------------+ | book | +---------------+ 1 row in set (0.01 sec)

    #查看表中数据
    MariaDB [crm]> select * from book;
    +--------+-------+-------+
    | name   | price | pages |
    +--------+-------+-------+
    | python |    60 |   518 |
    | linux  |    48 |   618 |
    | go     |    78 |   818 |
    +--------+-------+-------+
    3 rows in set (0.00 sec)

    2、备份数据库

    格式为:“mysqldump [参数] [数据库名称]” ,后面接保存地址

    [root@template yum.repos.d]# mysqldump -u root -p crm > /root/crm.dump
    Enter password: 
    
    [root@template yum.repos.d]# cd /root/
    [root@template ~]# ll
    -rw-r--r--. 1 root root 1900 Apr 16 02:48 crm.dump

    导入备份的数据

    #导入备份的数据
    [root@template ~]# mysql -u root -p crm < /root/crm.dump
    Enter password: 
    
    #登录数据库
    [root@template ~]# mysql -u root -p
    Enter password: 
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 25
    Server version: 5.5.52-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    #进入crm库
    MariaDB [(none)]> use crm
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    
    #查看表
    MariaDB [crm]> show tables;
    +---------------+
    | Tables_in_crm |
    +---------------+
    | book          |
    +---------------+
    1 row in set (0.00 sec)
    
    #查看表结构
    MariaDB [crm]> desc book;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | name  | char(20) | YES  |     | NULL    |       |
    | price | int(11)  | YES  |     | NULL    |       |
    | pages | int(11)  | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    #查看表中数据
    MariaDB [crm]> select * from book;
    +--------+-------+-------+
    | name   | price | pages |
    +--------+-------+-------+
    | python |    60 |   518 |
    | linux  |    48 |   618 |
    | go     |    78 |   818 |
    +--------+-------+-------+
    3 rows in set (0.00 sec)
  • 相关阅读:
    linux卸载mysql
    【Linux/Oracle】ORA-00031:标记要终止的会话 解决
    linux上 oracle数据库的密码过期-解决
    SYSTEM表空间满,解决方法
    Oracle 撤回已经提交的事务
    关于MySQL取不到数据
    解决mysql只能通过localhost而不能使用本机ip访问的问题
    linux 卸载php,史上最详情
    关于支付宝免密代扣申请(全),小程序,公众号,php
    mcrypt_module_open 微信小程序 php7不能使用的问题
  • 原文地址:https://www.cnblogs.com/nulige/p/6714523.html
Copyright © 2011-2022 走看看