《Linux就该这么学》培训笔记_ch18_使用MariaDB数据库管理系统
《Linux就该这么学》培训笔记_ch18_使用MariaDB数据库管理系统
文章最后会post上书本的笔记照片。
文章主要内容:
由于Oracle公司在2009年收购了MySQL的母公司Sun,因此MySQL数据库项目也随之纳入Oracle麾下,逐步从开源变成闭源。MySQL项目创始者重新研发了一款名为MariaDB的全新数据库管理系统。该软件当前由开源社区进行维护,是MySQL的分支产品,而且几乎完全兼容MySQL。
因为数据库基本上是IT行业必学的东西,加之本人本来对数据库比较熟悉,所以概念什么的就懒得再写了。因此直接上干货!
初始化MariaDB服务
1.安装MariaDB数据库主程序和服务端程序,安装完成后启动服务程序并加入到开机启动项。
yum install -y mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
2.执行mysql_secure_installation命令,对数据库程序进行初始化操作。初始化操作涉及下面5个步骤:
- 设置root管理员在数据库中的密码值(注意,该密码并非root管理员在系统中的密码,这里的密码值默认应该为空,可直接按回车键)。
- 设置root管理员在数据库中的专有密码。
- 随后删除匿名账户,并禁止root管理员从远程登录数据库,以确保数据库上运行的业务的安全性。
- 删除默认的测试数据库,取消测试数据库的一系列访问权限。
- 刷新授权列表,让初始化的设定立即生效。
mysql_secure_installation
Enter current password for root (enter for none):当前数据库密码为空,直接按回车键
Set root password? [Y/n] y
New password:输入要为root管理员设置的数据库密码(666666)
Re-enter new password:再次输入密码(666666)
Remove anonymous users? [Y/n] y(删除匿名账户)
Disallow root login remotely? [Y/n] y(禁止root管理员从远程登录)
Remove test database and access to it? [Y/n] y(删除test数据库并取消对它的访问权限)
Reload privilege tables now? [Y/n] y(刷新授权表,让初始化后的设定立即生效)
关于第3点,实际上在很多生产环境中都需要使用站库分离的技术(即网站和数据库不在同一个服务器上),这种状况下访问数据库大部分是通过远程访问的。要允许root管理员从远程访问,则上面初始化策略的第3步应设置为no。还需要设置防火墙,使其放行对数据库服务程序的访问请求,数据库服务程序默认会占用端口,在防火墙策略中服务名称统一叫作mysql。最后还需要设置允许远程登录数据库的权限。
关于数据库的远程登录,客户机(Linux)需要安装MariaDB主程序(yum install -y mariadb)才能使用相关命令。
firewall-cmd --permanent --add-service=mysql #放行mysql服务
firewall-cmd --reload
mysql -u root -p
MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by '666666'; #将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器
首次登陆MariaDB数据库,用root身份登录。
mysql -u root -p #以root身份登录MariaDB数据库,-p验证该用户在数据库中的密码是否正确
Enter password: 此处输入root管理员在数据库中的密码(初始化时设置的密码666666) #
MariaDB [(none)]> #登陆成功后的命令开头格式
MariaDB [(none)]> SHOW databases; #查看当前有哪些数据库(执行数据库命令时,都需要在命令后面用分号(;)结尾)
MariaDB [(none)]> SET password = PASSWORD(''); #把当前用户(root)在数据库中的密码更改为123456
MariaDB [(none)]> exit #退出登录
mysql -u root -p #再次以root身份登录数据库
Enter password:此处输入root管理员在数据库中的新密码() #此时需要输入新密码才能成功登陆
管理用户以及授权
创建用户:使用root管理员登录数据库管理系统,然后按照“CREATE USER 用户名@主机名 IDENTIFIED BY '密码'; ”的格式创建数据库管理账户。
MariaDB [(none)]> CREATE USER liwh@localhost IDENTIFIED BY ''; #创建用户liwh,仅供本地登录(localhost),密码为9527
MariaDB [(none)]> use mysql #使用数据库mysql
MariaDB [mysql]> SELECT HOST,USER,PASSWORD FROM user WHERE USER="liwh"; #查看账户信息(数据库中的用户信息保存在mysql数据库的user表中)
MariaDB [mysql]> exit #退出登录
[root@linuxprobe ~]# mysql -u liwh -p #以liwh身份登录(该用户没有数据库的任何操作权限)
MariaDB [(none)]> show databases; #查看MariaDB中有哪些数据库(显示不全,只有一个information_schema)
为用户授权(grant)和移除授权(revoke)。
grant命令:用于为账户进行授权。在使用grant命令时需要写上要赋予的权限、数据库及表单名称,以及对应的账户及主机信息。GRANT命令的常见格式以及解释:
| 命令 | 作用 |
| GRANT 权限 ON 数据库.表单名称 TO 用户名@主机名 | 对某个特定数据库中的特定表单给予授权 |
| GRANT 权限 ON 数据库.* TO 用户名@主机名 | 对某个特定数据库中的所有表单给予授权 |
| GRANT 权限 ON *.* TO 用户名@主机名 | 对所有数据库及所有表单给予授权 |
| GRANT 权限1,权限2 ON 数据库.* TO 用户名@主机名 | 对某个数据库中的所有表单给予多个授权 |
| GRANT ALL PRIVILEGES ON *.* TO 用户名@主机名 | 对所有数据库及所有表单给予全部授权(需谨慎操作) |
revoke命令:移除授权的命令(revoke)与授权命令(grant)不同之外,其余部分(格式和参数)都是一致的。
为账户授权:账户的授权工作肯定是需要数据库管理员账户来执行的。
- 以root管理员的身份登录到数据库管理系统中,针对mysql数据库中的user表单向账户liwh授予查询、更新、删除以及插入等权限;
- 查看用户liwh权限,以liwh身份登录数据库验证是否具有具体权限;
- 把用户liwh在上面获取的权限全部移除。
[root@linuxprobe ~]# mysql -u root -p #以root身份登录MariaDB
MariaDB [(none)]> use mysql; #使用mysql数据库
MariaDB [mysql]> GRANT SELECT,UPDATE,DELETE,INSERT ON mysql.user TO liwh@localhost; #赋予liwh对mysql数据库中的user表增删改查权限
MariaDB [mysql]> SHOW GRANTS FOR liwh@localhost; #查看用户liwh的权限
MariaDB [mysql]> exit #退出登录
[root@linuxprobe ~]# mysql -u liwh -p #以liwh身份登录MariaDB
MariaDB [(none)]> show databases; #查看MariaDB中有哪些数据库(只会显示liwh有权限操作的数据库)
MariaDB [(none)]> use mysql #进入mysql数据库
MariaDB [mysql]> SHOW TABLES; #查看mysql数据库中有哪些表(只会显示liwh有操作权限的表)
MariaDB [mysql]> exit #退出登录
[root@linuxprobe ~]# mysql -u root -p #以root身份登录MariaDB
MariaDB [(none)]> use mysql; #使用mysql数据库
MariaDB [mysql]> REVOKE SELECT,UPDATE,DELETE,INSERT ON mysql.user FROM luke@localhost; #移除liwh对mysql数据库的user表的增删改查权限
MariaDB [mysql]> SHOW GRANTS FOR luke@localhost; #查看liwh权限(可以发现刚才对mysql数据库的user表的增删改查权限已经消失)
创建数据库与表单
用于创建数据库的命令以及作用:
| 用法 | 作用 |
| CREATE database 数据库名称。 | 创建新的数据库 |
| DESCRIBE 表单名称; | 描述表单 |
| UPDATE 表单名称 SET attribute=新值 WHERE attribute > 原始值; | 更新表单中的数据 |
| USE 数据库名称; | 指定使用的数据库 |
| SHOW databases; | 显示当前已有的数据库 |
| SHOW tables; | 显示当前数据库中的表单 |
| SELECT * FROM 表单名称; | 从表单中选中某个记录值 |
| DELETE FROM 表单名 WHERE attribute=值; | 从表单中删除某个记录值 |
创建数据库test,并进入该数据库,创建表member。
MariaDB [(none)]> CREATE DATABASE test; #创建数据库test
MariaDB [(none)]> SHOW databases; #查看当前有哪些数据库
MariaDB [(none)]> use test; #使用test数据库
MariaDB [test]> CREATE TABLE member(num int,name char(),yearsold int); #在数据库test中创建表menber,定义3个字段
MariaDB [test]> DESCRIBE member; #查看表menber结构信息
管理表单及数据
MariaDB [test]> INSERT INTO member(num,name,yearsold) VALUES('','liwh', ''); #往表member插入数据:9527,liwh,25
MariaDB [test]> INSERT INTO member(num,name,yearsold) VALUES('','liangjm', ''); #往表member插入数据:9528,liangjm,29
MariaDB [test]> INSERT INTO member(num,name,yearsold) VALUES('','wujm', ''); #往表member插入数据:9529,wujm,24
MariaDB [test]> select * from member; #查看表member所有内容(显示共3条内容)
MariaDB [test]> update member set num = where name = 'liangjm'; #把name值为liangjm的记录的num值改为6666
MariaDB [test]> delete from member where num = ; #删除num值为9529的记录
MariaDB [test]> select * from member where yearsold > ; #查出所有yearsold值大于24的记录(剩余的两条记录的yearsold值均大于24)
数据库的备份及恢复
mysqldump命令:用于备份数据库数据,格式:mysqldump [参数] [数据库名称]。其中参数-u参数用于定义登录数据库的账户名称,-p参数代表密码提示符。
test数据库备份以及恢复步骤:
- 将test数据库中的内容导出成一个文件,并保存到root管理员的家目录中;
- 进入MariaDB,彻底删除test数据库(drop),这样member表也将被彻底删除。然后重新建立test数据库;
- 使用输入重定向符把刚刚备份的数据库文件导入到mysql命令中,执行该命令;
- 进入test数据库,查看test数据库中的表,发现先前的member表,数据库恢复完成。
mysqldump -u root -p test > /root/testDB.dump #导出test数据库到文件testDB.dump
MariaDB [(none)]> DROP DATABASE test; #彻底删除test数据库
MariaDB [(none)]> SHOW databases; #可以发现test数据库已经消失
MariaDB [(none)]> CREATE DATABASE test; #重新创建test数据库
mysql -u root -p test < /root/testDB.dump #把数据库备份文件testDB.dump导入到mysql命令
mysql -u root -p #以root身份登入MariaDB
MariaDB [(none)]> use test; #使用test数据库
MariaDB [test]> SHOW tables; #可以发现member表已恢复
MariaDB [test]> DESCRIBE member; #member表结构与删除前一模一样
书本笔记




《Linux就该这么学》培训笔记_ch18_使用MariaDB数据库管理系统的更多相关文章
- Linux基础学习-MariaDB数据库管理系统
数据库管理系统 数据库是指按照某些特定结构来存储数据资料的数据仓库,数据库管理系统是一种能够对数据库中存放的数据进行建立.修改.删除.查找.维护等操作的软件程序. 初始化MariaDB服务 [root ...
- LInux 就该这么学 笔记分享
看了Linux就该这么学的前部分书,觉得写的还可以,就在网上找了下面这个同学写的笔记,觉得很详细,所以保存地址,供以后查阅参看.这里对作者表示感谢!!! 博客地址: https://www.cnblo ...
- Linux就该这么学--第五期 学习笔记
第一节:基础 <Linux就该这么学>第二期视频 Linux就该这么学第5期第二节: ------------你的价值:你对公司做出的共享和你的不可替代性------------瑞尔系统R ...
- Linux就该这么学笔记
https://www.linuxprobe.com/========================================================================= ...
- linux-RHEL7.0 —— 《Linux就该这么学》阅读笔记
目录 linux-RHEL7.0 安装部署 修改root密码 RPM(红帽软件包管理器) YUM(软件仓库) Systemd初始化进程 总结 linux命令 帮助命令 man 系统工作命令 echo ...
- 《Linux就该这么学》
参加了第19期课程的培训,感谢刘老师的辛苦付出,课程讲的很好,真心推荐老刘的这本书真是<Linux就该这么学>!!! 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的 ...
- 《Linux就该这么学》第二期视频
Linux就该这么学--第二期学习笔记... ------------- 你的未来取决于你现在点点滴滴的努力 需要用到的一些工具: Vm11激活码 ---------- root在Linux系统中相当 ...
- 《Linux就该这么学》第十八天课程
1.使用MariaDB数据库管理系统 今天没什么笔记,就不发了.想深入学习的可以前往原创地址:https://www.linuxprobe.com/chapter-18.html 图18-1 Mari ...
- 《Linux就该这么学》day3
ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...
随机推荐
- windows通过秘钥使用ssh和scp
windows10内置支持了ssh和scp等仿linux指令,可以让我们方便的使用类似linux的工作流把日常的代码资源部署维护工作写成脚本(批处理). ssh和scp都有-i参数可以通过指定一个私钥 ...
- JS删除指定下标的元素
在开发过程中,有时我们需要删除数组中某一下标的元素.JAVA中ArrayList有remove函数.但是在JavaScript中没有直接的删除方法.我们可以利用splice来实现.Array.spli ...
- python机器学习简介
目录 一:学习机器学习原因和能够解决的问题 二:为什么选择python作为机器学习的语言 三:机器学习常用库简介 四:机器学习流程 机器学习是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析 ...
- 面试官:“谈谈Spring中都用到了那些设计模式?”。
我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 41k+ Star.会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://github.com/Snailclim ...
- 同步fifo与异步fifo
参考以下帖子: https://blog.csdn.net/hengzo/article/details/49683707 https://blog.csdn.net/Times_poem/artic ...
- 面试官:讲讲redis的过期策略如何实现?
时隔多日,小菜鸡终于接到阿里的面试通知,屁颠屁颠的从上海赶到了杭州. 经过半个小时的厮杀: 自我介绍 hashMap和ConcurrentHashMap区别 jdk中锁的实现原理 volatile的使 ...
- Asp.Net构架(Http请求处理流程)
一:引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何一步步拖放控件.设置控件属性.编写CodeBehind代码,以实现某个 ...
- python 的 encode 、decode、字节串、字符串
一.摆个图 DJ DJ DJ Decode. J 解码 首先得知道字符串有哪些编码格式,至于为什么会有这么多的编码格式,以后再了解更新. 1.ASCII 占1个字节,只支持英文 2.GB231 ...
- PAT 乙级 1032.挖掘机技术哪家强 C++/Java
题目来源 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 1 的正整数 N,即参赛人数.随后 ...
- 从架构开始谈dubbo(二)-----zookeeper安装和dubbo文档查阅
一.Zookeeper下载与安装 1.官网地址下载 https://zookeeper.apache.org/ 2.找到图中英文位置(英文不好,安图操作就好了,计算机很多东西如果你没法很好的记忆,就画 ...