Linux-MariaDB数据库的备份与初始化

文章介绍了如何在Linux环境下使用MariaDB进行数据库备份,包括使用mysqldump命令导出SQL脚本。同时,讲解了查询和新建用户、权限分配与回收、密码更新以及root密码重置的步骤。涉及到的关键操作包括grant和revoke命令的使用。
摘要由CSDN通过智能技术生成

缘起

Linux系统下我们比较常用的数据库软件是开源又免费的MySQL。MariaDB是MySQL的一个分支,采用GPL授权许可,完全兼容MySQL的API与命令行。虽然MariaDB公司即将倒闭,但这不影响它的性能超越MySQL的事实。

数据库备份

使用mysqldump命令。这个命令可以帮助导出一个含有数据库结构与数据的SQL脚本,导出脚本的功能大概是:创建数据库判断语句-删除表-创建表-锁表-禁用索引-插入数据-启用索引-解锁表
要导出所有数据,可以这么用:

mysqldump -uroot -p --host=127.0.0.1 --port=3306 --all-databases >/tmp/full.sql

*其中host 127.0.0.1指数据库所在服务器,需要改为自己在用的。Port是默认的。
*上方命令需要使用者持有root账号密码,如果没有,把-u后面的root替换为使用者持有的拥有相关权限的其他账号名即可。
当然,我们可以通过参数选择只导出部分内容。在这里不做展开。

数据库用户查询

MySQL是一个多用户管理的数据库,并通过权限表来控制用户对数据库的访问,权限表默认放在了mysql数据库中,主要的有user,db,table_priv,columns_prov和procs_priv。这里用户信息,哈希加密用户密码,用户权限等是在user表中。下方的命令可以简单明了的查看user表的主要信息。

use mysql;
select host,user,password from user order by host desc,user desc;

host为%意味着可以在从任何地址连接到服务器。

数据库新建用户

方法一,使用root账户运行下面代码,需要注意的是这种方式创建的用户默认没有任何权限。参考下面的数据库赋权部分分配权限。

create user 'User1'@'%' identified by 'password1';

方法二,使用root账户直接在user表新加。

use mysql;
 
#等同于grant all privileges on *.* to " User1 "@"%" identified by ' password1' with grant option;
 
insert into user values("%","User1",password("password1"),"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y");
flush privileges;
 
#等同于grant select,insert on database1.datatable1 to "User2"@"0.0.0.0" with grant option;
 
insert into user (host,user) values("0.0.0.0","User2");
insert into db values("0.0.0.0","User2","Y","Y","Y","Y","Y","Y","N","N","N","N")
flush privileges;
 

#数据库赋权
使用root账号,运行下面命令,一般权限为以下顺序:select、update、delete、insert、alter、drop、create等

grant all privileges on databse1.* to User1@'%';
#with grant option指可以将update权限传递给其他用户
grant all privileges on databse1.* to User1@'%' with grant option;
#用identified by 'password1'指同时重置密码为password1
grant all privileges on databse1.* to User1@'%' identified by 'password1';
flush privileges;

数据库权限回收

Revoke命令用来回收权限。以下是一些示例

revoke all on *.* from "User3"@"localhost";
revoke all on database1.datatable1 from "User3"@"localhost";
revoke select on *.* from "User3"@"localhost";

数据库更新密码

本质上也是更新User表内容

update user set password=password('newpassword') where user='User1';
flush privileges;

#数据库删除用户
本质上也是更新User表

drop user 'User1'@'localhost'
delete from user where user='User1';
flush privileges;

#数据库复原

source /tmp/full.sql

数据库root密码重置

在全新的安装有MariaDB的机器上,如果我们丢失了root密码,可以在配置文件里做一点调整。
首先,停止MariaDB服务

service mariadb stop

#用vim命令编辑安装目录下配置文件my.cnf,插入一行” skip-grant-tables”,这样我们就可以跳过数据库权限验证
启动服务

service mariadb restart

登陆数据库

mysql -u root

将数据库切换至mysql库

use mysql;

修改密码

update user set password=password('newpasswd') where user='root';

刷新MySQL权限相关的表

flush privileges;

退出

quit;

将之前插入的配置语句注释掉,重启服务,即可使用新密码登陆

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值