CentOS 7、8默认的MariaDB数据库的使用详解

maria是一个人名,mariadb数据库是MySQL数据库的分支,主要由开源社区进行维护和更新。

和MySQL数据库一样,mysqld也是mariadb数据库软件提供服务的进程的名称。

目录

初始化mariadb服务

安装mariadb数据库

启动mariadb服务

登录mariadb数据库

修改数据库用户密码的三种方法

管理账户以及授权

创建数据库与表

管理表及数据

数据库的备份及恢复


初始化mariadb服务

安装mariadb数据库

yum install mariadb mariadb-server -y

mariadb软件里包含了很多客户端的工具
mariadb-server是真正提供数据库服务的软件

启动mariadb服务

systemctl start mariadb
service mariadb start (二选一)

# 设置mariadb服务开机自启
systemctl enable mariadb

# 为了确保数据库的安全性和正常运转,需要先对mariadb数据库程序进行初始化操作
[root@localhost ~]# mysql_secure_installation
输入以上命令可以为root管理员设置数据库密码、删除匿名账户、禁止root管理员从远程登录、删除默认的测试数据库并取消对它的访问权限、刷新授权表让初始化后的设定立即生效

# 关闭防火墙或者设置防火墙策略,使其放行对数据库服务程序的访问请求
systemctl stop firewalld
systemctl disable firewalld
或
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload

登录mariadb数据库

mysql -uroot -p
mysql -u root -p (二选一)

-uroot表示指定使用root用户登录

修改数据库用户密码的三种方法

(1)使用grant修改

grant all on *.* to 用户名@主机名 identified by '密码';

# 举例
MariaDB [(none)]> grant all on *.* to root@localhost identified by '499499';
Query OK, 0 rows affected (0.000 sec)

(2)使用alter修改

alter user 用户名@主机名 identified by '密码';

# 举例
MariaDB [(none)]> alter user root@localhost identified by '499499';
Query OK, 0 rows affected (0.000 sec)

(3)使用set修改

set password for 用户名@主机名 = password('密码');

# 举例
MariaDB [(none)]> set password for root@localhost =  password('123456');
Query OK, 0 rows affected (0.000 sec)

管理账户以及授权

在生产环境中为了保障数据库系统的安全性,以及让其他用户协同管理数据库,我们可以在MariaDB数据库管理系统中为他们创建多个专用的数据库管理账户,然后再分配合理的权限,以满足工作需求。为此,我们可以使用root管理员登录数据库,然后按照一定的格式创建数据库管理账户。

创建账户的格式

create user 用户名@主机名 identified by '密码';

创建账户suda

MariaDB [(none)]> create user suda@localhost identified by '499499';
Query OK, 0 rows affected (0.001 sec)

查询账户suda的主机名称、账户名称以及加密后的密码信息

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]> select host,user,password from user where user='suda';
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | suda | *805C8238CC90C99F3763C67766565698D3A469DD |
+-----------+------+-------------------------------------------+
1 row in set (0.001 sec)

用户suda只是一个普通账户,没有数据库的任何操作权限。切换到suda账户来查询有哪些数据库,我们发现,该账户甚至没法查看完整的数据库列表。

切换到suda用户登录数据库

[root@localhost ~]# mysql -u suda -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 27
Server version: 10.3.28-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.001 sec)

这时我们需要使用 grant 命令为账户授权,常见格式如下:

grant 权限 on 数据库.表单名称 to 账户名@主机名;		 # 对某个特定数据库中的特定表单给予授权
grant all privileges on *.* to 账户名@主机名;		 # 对所有数据库及所有表单给予全部授权

以root管理员的身份登录数据库,针对mysql数据库的user表单向账户suda授予查询、更新、删除以及插入等权限

MariaDB [(none)]> grant select,update,delete,insert on mysql.user to suda@localhost;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> show grants for suda@localhost;
+-------------------------------------------------------------------------------------------------------------+
| Grants for suda@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `suda`@`localhost` IDENTIFIED BY PASSWORD '*805C8238CC90C99F3763C67766565698D3A469DD' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `mysql`.`user` TO `suda`@`localhost`                                |
+-------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

使用revoke命令移除授权

MariaDB [(none)]> revoke select,update,delete,insert on mysql.user from suda@localhost;
Query OK, 0 rows affected (0.000 sec)

创建数据库与表

创建数据库的相关命令以及作用

create database 数据库名称                            # 创建新的数据库
describe 表单名称                                            # 描述表单
use 数据库名称                                                # 进入到指定的数据库
show databases                                               # 显示当前已有的数据库
show tables                                                      # 显示当前数据库中的表
select * from 表单名称                                      # 从表中查询某个记录值
delete from 表单名称 where attribute=值         # 从表中删除某个记录值
update 表单名称 set attribute=新值 where attribute>原始值                 # 更新表中的数据

创建一个数据库和表

# 创建一个名称为linuxprobe的数据库
MariaDB [(none)]> create database linuxprobe;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> SHOW databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| linuxprobe         |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.000 sec)

# 在linuxprobe数据库中创建表单mybook,并且定义3个字段项
MariaDB [(none)]> use linuxprobe;
Database changed
MariaDB [linuxprobe]> create table mybook(name char(15),price int,pages int);
Query OK, 0 rows affected (0.007 sec)
MariaDB [linuxprobe]> describe mybook;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(15) | YES  |     | NULL    |       |
| price | int(11)  | YES  |     | NULL    |       |
| pages | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.001 sec)

管理表及数据

对数据库运维人员来讲,需要做好四门功课——增、删、改、查。

举例

# 使用insert命令新增一条图书信息
MariaDB [linuxprobe]> insert into mybook(name,price,pages) values('linuxprobe','60','519');
Query OK, 1 row affected (0.001 sec)

# 使用select命令查询表单内容时,如果想查看表单中的所有内容,可以使用“*”通配符来显示
MariaDB [linuxprobe]> select * from mybook;
+------------+-------+-------+
| name       | price | pages |
+------------+-------+-------+
| linuxprobe |    60 |   519 |
+------------+-------+-------+
1 row in set (0.000 sec)

# 使用update命令将linuxprobe图书信息的价格修改为55元
MariaDB [linuxprobe]> update mybook set price=55;
Query OK, 1 row affected (0.001 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [linuxprobe]> select name,price from mybook;
+------------+-------+
| name       | price |
+------------+-------+
| linuxprobe |    55 |
+------------+-------+
1 row in set (0.000 sec)

# 使用delete命令删除表mybook中的所有内容
MariaDB [linuxprobe]> delete from mybook;
Query OK, 1 row affected (0.001 sec)

MariaDB [linuxprobe]> select * from mybook;
Empty set (0.000 sec)

# 为了接下来的测试,先使用insert命令依次插入4条图书信息
MariaDB [linuxprobe]> insert into mybook(name,price,pages) values('linuxprobe1','30','519');
Query OK, 1 row affected (0.001 sec)

MariaDB [linuxprobe]> insert into mybook(name,price,pages) values('linuxprobe2','50','519');
Query OK, 1 row affected (0.001 sec)

MariaDB [linuxprobe]> insert into mybook(name,price,pages) values('linuxprobe3','80','519');
Query OK, 1 row affected (0.001 sec)

MariaDB [linuxprobe]> insert into mybook(name,price,pages) values('linuxprobe4','100','519');
Query OK, 1 row affected (0.001 sec)

# 要想让查询结果更加精准,就需要结合使用select和where命令了
# where命令是在数据库中进行匹配查询的条件命令,常用的查询参数及作用如下:
=			相等
<>或!=	   不相等
>			大于
<			小于
>=			大于等于
<=			小于等于
between		在某个范围内
like		搜索一个例子
in			在列中搜索多个值

# 举例
分别在mybook表中查找出价格大于75元或价格不等于80元的图书
MariaDB [linuxprobe]> select * from mybook where price>75;
+-------------+-------+-------+
| name        | price | pages |
+-------------+-------+-------+
| linuxprobe3 |    80 |   519 |
| linuxprobe4 |   100 |   519 |
+-------------+-------+-------+
2 rows in set (0.000 sec)

MariaDB [linuxprobe]> select * from mybook where price!=80;
+-------------+-------+-------+
| name        | price | pages |
+-------------+-------+-------+
| linuxprobe1 |    30 |   519 |
| linuxprobe2 |    50 |   519 |
| linuxprobe4 |   100 |   519 |
+-------------+-------+-------+
3 rows in set (0.001 sec)

数据库的备份及恢复

我们一般使用 mysqldump 命令用于备份数据库。

# 格式

mysqldump [参数] [数据库名称]

# mysqldump的参数与mysql命令大致相同

-u        定义登录数据库的账户名称

-p        代表密码提示符

举例

进行数据库备份

# 将linuxprobe数据库中的内容导出成一个文件,保存在root管理员的家目录中
[root@localhost ~]# mysqldump -u root -p linuxprobe > /root/linuxprobeDB.dump
Enter password:   此处输入root管理员在数据库中的密码

# 进入mariadb数据库,彻底删除linuxprobe数据库,这样mybook表单也将被彻底删除,然后重新建立linuxprobe数据库
MariaDB [(none)]> drop database linuxprobe;
Query OK, 1 row affected (0.013 sec)

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

MariaDB [(none)]> create database linuxprobe;
Query OK, 1 row affected (0.000 sec)

进行数据库恢复

# 使用输入重定向符将刚刚备份的数据库文件导入到mysql命令中,然后执行该命令
[root@localhost ~]# mysql -u root -p linuxprobe < /root/linuxprobeDB.dump
Enter password:   此处输入root管理员在数据库中的密码
[root@localhost ~]# mysql -u root -p
Enter password:   此处输入root管理员在数据库中的密码

MariaDB [(none)]> use linuxprobe;
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 [linuxprobe]> show tables;
+----------------------+
| Tables_in_linuxprobe |
+----------------------+
| mybook               |
+----------------------+
1 row in set (0.000 sec)

MariaDB [linuxprobe]> describe mybook;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(15) | YES  |     | NULL    |       |
| price | int(11)  | YES  |     | NULL    |       |
| pages | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.001 sec)
# 数据库恢复成功

当然我们还可以使用SQLyog或DataGrip或Navicat这些客户端数据库软件进行备份。

比如在SQLyog中,鼠标右键点击一个数据库,它就会有一个备份的功能,能够让我们以SQL转储文件的形式备份数据库。

你可能感兴趣的:(Linux,linux,运维,数据库)