什么是 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的名字。

为什么是 Mariadb

  •   MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

  •   MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。

  •   MariaDB名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。

  •   MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和自行开发的新功能。

  •   MariaDB的API和协议兼容MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。这意味着,所有使用MySQL的连接器、程序库和应用程序也将可以在MariaDB下工作。在此基础上,由于担心甲骨文MySQL的一个更加封闭的软件项目,Fedora的计划在Fedora 19中的以MariaDB取代MySQL,维基媒体基金会的服务器同样也使用MariaDB取代了MySQL。


安装 Mariadb

  1. 确认是否安装了 Mariadb,如果安装首先卸载:

    1
    rpm -qa | grep mariadb
  2. 查询 Mariadb 软件源:

    1
    dnf search mariadb
  3. 查看 mairadb-server 信息:

    1
    dnf info mariadb-server
  4. 安装 Mariadb-server:

    1
    2
    3
    4
    //管理员安装
    //dnf install -y mairadb-server
    //非管理员安装
    su -c "dnf install -y mairadb-server"

Mariadb 状态及设置开机运行

  1. 查看运行状态:

    1
    systemctl status mariadb
  2. 设置开机运行

    1
    2
    systemctl enable mariadb
    //非管理员情况下会提示使用root进行操作,输入密码即可
  3. 手动运行 Mariadb

    1
    2
    systemctl start mariadb
    //非管理员情况下会提示使用root进行操作,输入密码即可
  4. 再次查看状态:

    1
    systemctl status mariadb

    说明:看到Active(Running)字样,说明正常运行

Mariadb 基本设置

  1. 查看 Mariadb-server 安装了那些组件?分别安装在哪里?

    1
    rpm -ql mariadb-server
  2. Mariadb 默认使用的目录,基本与MySQL 一致:

    • bin目录: /usr/bin

    • 配置文件目录: /usr/share/mariadb

    • 数据库文件存放目录: /var/lib/mysql

    • 启动配置文件目录: /etc/my.cnf.d

    • 日志目录: /var/log/mariadb

  3. Mariadb 安装配置向导 mysql_secure_installation

    • 安装完mysql-server 会提示可以运行mysql_secure_installation。运行mysql_secure_installation会执行几个设置:

      a) 为root用户设置密码

      b) 删除匿名账号

      c) 取消root用户远程登录

      d) 删除test库和对test库的访问权限

      e) 刷新授权表使修改生效

    通过这几项的设置能够提高mysql库的安全。建议生产环境中mysql安装这完成后一定要运行一次;

    1
    shell]$  mysql_secure_installation
    • 如果曾经安装过Mariadb 或者 Mysql 数据库卸载后再次安装,且运行 mysql_secure_installation, 请输入上次数据库设置的用户密码,否则:

Mariadb 基本操作

  1. 登录 Mariadb 数据库

    1
    2
    mysql -h host -P 3306 -u root -p
    //其中 host 为服务器地址; 3306 为默认端口号 root 为登录用户名 -p为密码
  2. 退出登录 Mariadb

    1
    quit
  3. 查看 Mariadb 版本

    1
    select version();
  4. 应用指定数据库

    1
    use database;
  5. 查看当前选择使用的数据库

    1
    select database();
  6. 查看 Mariadb 数据库

    1
    show databases;
  7. 查看默认认证方式

    Mysql Mariadb 数据中,用户信息存放在默认的 mysql 数据库的 user 表中

    1
    select host, user, plugin from user;
  8. 创建用户并授权

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 创建用户
    create user 'user_name'@'%' identified with mysql_native_password by 'password';
    #
    # 授权
    grant all privileges on database.tables to 'user_name'@'%' with grant option;
    # 授权所有数据库的所有表所有权限
    # grant all privileges on *.* to 'user_name'@'%' with grant option;
    #
    # 刷新使之生效
    flush privileges;

    其中:

    • user_name:用户名

    • ‘%’ 域
      可选值:
      %代表通配所有host地址权限(可远程访问)
      localhost为本地权限(不可远程访问)
      指定特殊Ip访问权限 如10.138.106.102

    • password 密码

    • database.tables 数据库.表 格式;如果是 . 表示所有数据库的所有表

  9. 查看用户权限

    1
    show grants for '#userName'@'#host';
  10. 撤销授权

    1
    REVOKE '#privilege' ON '#databasename'.'#tablename' FROM '#username'@'#host';

    privilege 代表具体权限 比如: ALL select 等
    注意用什么的语句授权就用什么样的语句收回权限,否则可能无法撤销权限

总结

  Linux 系统中安装 Mariadb 想对与 Windows 上安装相对简单,只要熟悉 Linux 的基本操作,使用 dnf 源安装、设置 Mariadb 可以很快完成。

  如果是在生产环境中安装 Mariadb 或者 Mysql 数据库,安装完成后,一定要做安全初始化,建议如下操作:

1. 设置 root 安全密码有大小写,字符等

2. 禁止远程 root 登录

3. 删除测试数据库

4. 删除匿名账户

5. 重新加载授权表