maria是一个人名,mariadb数据库是MySQL数据库的分支,主要由开源社区进行维护和更新。
和MySQL数据库一样,mysqld也是mariadb数据库软件提供服务的进程的名称。
目录
初始化mariadb服务
安装mariadb数据库
启动mariadb服务
登录mariadb数据库
修改数据库用户密码的三种方法
管理账户以及授权
创建数据库与表
管理表及数据
数据库的备份及恢复
yum install mariadb mariadb-server -y
mariadb软件里包含了很多客户端的工具
mariadb-server是真正提供数据库服务的软件
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
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转储文件的形式备份数据库。