使用MariaDB管理数据库



一、数据库服务器

1. 基本概念

  • 数据库
  • 数据库管理系统(DBMS)
  • 数据库系统(DBS)
  • 数据库服务器
  • 数据库分为三种基本形式:
    • 关系型数据库
    • 层次型数据库
    • 网状型数据库
  • 运行在 Linux 上的关系型数据库管理系统主要产品:
    • 企业级服务器:Oracle、MongoDB、DB2、HBase
    • 中小型服务器:MariaDB/MySQL、PostgresQL
  • 全球数据库产品排名网站地址:http://db-engines.com/en/ranking

MariaDB 是 MySQL 的替代品

采用 GPL 授权许可,主要由开源社区在维护。

开发该软件的原因是 MySQL 被 Oracle 公司收购后,更新升级速度缓慢且有面临闭源和收费的可能,导致了各个大公司(如,Facebook、Google、阿里巴巴)都开发了自己定制的 MySQL 版本,其中,

由 MySQL 的创始人麦克尔·维德纽斯(Michael Widenius)主导开发的 MariaDB 最为著名。

MariaDB 名称来自麦克尔·维德纽斯的女儿玛丽亚(Maria)的名字,MariaDB 是目前在开源社区中最受欢迎的一款免费、开源的数据库管理系统。

MariaDB具有功能强、体积小、速度快、成本低、开放源代码、安全可靠等优点,相对于 MYSQL 在功能上有很多扩展特性,比如微秒的支持、线程池、子查询优化、组提交、进度报告等。

2. MariaDB 服务器的安装与运行管理

从 RHEL7 版本开始,系统盘中自带的数据库由 MySQL 改为 MariaDB,默认情况下系统未安装 MariaDB 程序包

  • MariaDB 的安装:
     yum -y groupinstall mariadb mariadb-client
  • MariaDB 服务的启动、停止、重启、重新加载和状态查询的命令一般格式如下:
     systemctl start|stop|restart|reload|status mariadb.service
  • 设置开机自动启动或不启动 MariaDB 服务的命令一般格式如下:
     systemctl enable|disable mariadb.service
  • 查看 MariaDB 进程的命令如下:
      ss -tulpn | grep mysql
     tcp LISTEN 0 50 *:3306 *:* users:((“mysqld”,pid=3384,fd=14))

3. 运行 MariaDB 安全配置向导

为了提高 MariaDB 的安全性,在 MariaDB 完成安装和启动服务后,一定要运行一次安全配置向导命令 mysql_secure_installation,该命令会以人机交互的方式完成有关初始化设置。

[root@localhost ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
......
Enter current password for root (enter for none):     // 首次运行时 root 用户密码为空,直接回车
......
Set root password? [Y/n] y                    // 是否设置 root 用户密码,输入 y 并回车或直接回车
New password:                                 // 设置 root 用户的密码
Re-enter new password:                        // 再输入一次设置的密码
......
Remove anonymous users? [Y/n] y               // 是否删除匿名用户,生产环境建议删除,直接回车
......
Disallow root login remotely? [Y/n] y         // 是否禁止 root 远程登录,根据需求选择 Y/n 并回车
......
Remove test database and access to it? [Y/n] y               // 是否删除 test 数据库,直接回车
......
Reload privilege tables now? [Y/n] y                         // 是否重新加载权限表,直接回车
......

4. 更改管理员账号的密码

默认情况下,root 用户的初始密码为空。root 账号具有管理 MariaDB 的最高权限,为安全起见,应定期修改其密码,其命令格式为:mysqladmin -u 用户名 [-h 服务器主机名] [-p]password '新密码'

5. 修改配置文件

配置 MariaDB 的登录方式及侦听的网络接口

[root@localhost ~]# vim /etc/my.cnf
[mysqld]
......                       // 省略若干行
skip-networking=0            // 值为 0 时,支持本地和远程登录; 值为1时,仅允许本地登录
bind-addrecss=192.168.1.1    // 侦听的网络接口(添加此行无法启动服务器是为什么?????)

6. MariaDB 的登录及退出

命令:mysql [-h 主机名] -u 用户名 -p[用户密码]

-h 主机名——用于指定被登录的主机,若未指定则表示 localhost。

-u 用户名——用于指定登录的用户名。

-p[用户密码]——用于指定登录的用户密码,“-p” 与其后的密码符号不能留空。

7. 配置支持汉字数据处理

7.1 修改配置文件

编辑 /etc/my.cnf、/etc/my.cnf.d/client.cnf、/etc/my.cnf.d/mysql-clients.cnf 等配置文件,设置默认的汉字字符集为 utf8 →重启 Mariadb 服务使修改后的配置生效。

配置 MariaDB 支持汉字数据处理

[root@localhost ~]# vim /etc/my.cnf
[mysqld]                         // 服务器端配置小节
datadir=/var/lib/mysql           // 设置数据库或表的默认存储位置
socket=/var/lib/mysql/mysql.sock
symbolic-links=1                 // 数据库或表可以存储在 datadir 之外的分区或目录

default-storage-engine=INNODB    // 添加本行及以下2行
character-set-server=utf8        // 设置服务器默认字符集
collation-server=utf8_general_ci
[root@localhost ~]# vim /etc/my.cnf.d/client.cnf
[client]
default-character-set=utf8       // 添加此行:设置客户端默认字符集
[root@localhost ~]# vim /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8       // 添加此行:设置数据库默认字符集
[root@dyzx ~]# systemctl restart mariadb.service

7.2 查看数据库的字符集

以 root 账号登录本机的 MariaDB 服务器 → 使用 show 命令查看数据库的字符集已全部改成 utf8 。

[root@dyzx ~]# mysql -h localhost -u root -p         //从本地登录数据库服务器
Enter password:    
......    // 省略若干行
MariaDB [(none)]> show variables like 'char%'; show variables like 'coll%';    //查看字符集
+-----------------------------+----------------------------+
| Variable_name               | Value                      |
+-----------------------------+----------------------------+
| character_set_client        | utf8                       |
| character_set_connection    | utf8                       |
| character_set_database      | utf8                       |
| character_set_filesystem    | binary                     |
| character_set_results       | utf8                       |
| character_set_server        | utf8                       |
| character_set_system        | utf8                       |
| character_sets_dir          | /usr/share/mysql/charsets/ |
+-----------------------------+----------------------------+
8 rows in set (0.00 sec)
+-----------------------+-----------------+
| Variable_name         | Value           |
+-----------------------+-----------------+
| collation_connection  | utf8_general_ci |
| collation_database    | utf8_general_ci |
| collation_server      | utf8_general_ci |
+-----------------------+-----------------+
3 rows in set (0.00 sec)

二、使用 SQL 命令管理数据库

mysql 安装后默认会创建三个数据库 information_schema、mysql 和 test,其中名为 “mysql” 的数据库很重要,它里面保存有 MYSQL 的系统信息,用户修改密码和新增用户,实际上就是针对该数据库中的有关数据表进行操作。

1. 数据库管理命令

SQL 命令 功能
show databases; 查看服务器中当前有哪些数据库
select database(); 查看当前数据库
select user(); 查看当前用户
use 数据库名; 选择所使用的数据库
create database 数据库名; 创建数据库
drop database 数据库名; 删除指定的数据库

2. 数据表结构管理

SQL 命令 功能
create table 表名 (字段列表); 在当前数据库中创建表
show tables; 显示当前数据库中有哪些表
describe [数据库名.]表名; 显示当前或指定数据库中指定表的结构(字段)信息
drop table[数据库名.]表名; 删除当前或指定数据库中指定的表

3. 记录的查询、插入、更新与删除

SQL 命令 功能
select 字段名1, 字段名2……from 表名 where 条件表达式; 查询指定表中符合条件的记录
select * from 表名; 查询当前数据库的指定表中的记录
chaxuinsert into 表名(字段1, 字段2, …….) values (字段1的值, 字段2的值 …….); 插入新的记录到指定的表中
update 表名 set 字段名1=字段值1[,字段名2=字段值2] where 条件表达式; 更新指定表中的符合条件的记录
delete from 表名 where 条件表达式; 删除指定的表中满足条件的记录
delete from 表名; 清空当前数据库指定表内的所有记录

三、管理数据库用户与访问权限

1. 创建数据库用户

命令格式:create user 用户名@来源地址 identified by [password] '密码';

2. 授权给数据库用户

命令格式:grant 权限列表 on 数据库名.表名 to 用户名@来源地址

权限列表:是以逗号分隔的权限符号,主要权限符号见表:
| 权限符号 | 权限 | 权限符号 | 权限 |
| ——– | ————————– | ——– | ———————————— |
| select | 允许读取(查询)表中任意字段 | insert | 允许向指定表中插入记录 |
| update | 允许更新指定表中任意字段 | delete | 允许删除指定表中的记录 |
| index | 允许创建或删除指定表的索引 | create | 允许创建新的数据库和表 |
| alter | 允许修改表的结构 | grant | 允许将自己拥有的某些权限授予其他用户 |
| drop | 允许删除现存的数据库和表 | process | 允许查看当前执行的查询 |
| reload | 允许重新装载授权表 | all | 具有全部权限 |

3. 查看数据库用户的权限

命令格式:show grants for 用户名@'来源地址';

4. 撤销数据库用户的权限

命令格式: revoke 权限列表 on 数据库名.表名 from 用户名@域名或IP地址

四、数据库的备份与恢复

1. 备份(导出)数据

命令格式:mysqldump -u 用户名 -p [密码] [选项] [数据库名] [表名] > /备份路径/备份文件名

常用选项:
 –all-databases——备份服务器中的所有数据库内容。
 –opt——对备份过程进行优化,此项为默认选项。
 –no-data——仅备份数据库结构,不备份数据内容(记录)。

2. 恢复(导入)数据

命令格式:mysql -u root -p [数据库名] < /备份路径/备份文件名


文章作者: AYang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AYang !
  目录