Lesson24 Linux中数据库mariadb的管理
文章目录
- 1. 了解数据库
- 2. 了解mariadb数据库
- 3. 搭建实验环境
- 4. 安装和登陆mariadb数据库的服务软件
- 4.1 安装mariadb数据库的服务软件
- 4.2 登陆mariadb数据库
- 4.3 mariadb数据库的安全设置
- 5. 数据库的管理
- 5.1 数据库的查询
- 5.2 数据库的建立
- 5.3 数据库信息的更改
- 5.4 数据库的删除
- 5.5 数据库用户授权(不能所有的都在本地root下面)
- 5.6 数据库的备份与恢复
- 5.7 数据库的管理密码问题
- 5.8 安装phpadmin数据库图形管理软件
1. 了解数据库
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作
所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合
数据对一个企业是非常重要的,其实就相当于我们每个人的信息就是自己的属性,并且把它记录在一个文件里面
多张表格组成一个数据库,tab (表)---->db (库)----->数据库软件
我们现在学对数据库的一些基本操作,其实就是一个高级的excel表格
2. 了解mariadb数据库
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 ,
MariaDB的目的是完全兼容MySQL 包括API和命令行,使之能轻松成为MySQL的代替品
在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB
MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN
此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中
MariaDB名称来自Michael Widenius的女儿Maria的名字 MariaDB基于事务的Maria存储引擎,
替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体 分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能,
这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎
MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱 于是决定重新开发代码全部开源免费关系型数据库,这就是MariaDB 在navicat中操mariaDB的界面和提示符还是mysql
端口也是3306 外人看起来除了数据库名字改了其他和mysql完全一致 mariaDB在各方面都是mysql创新和提高版本 而不是简单的替代品
mysql和mariaDB开发团队一致,区别在于mysql已经被oracle闭源了而mariaDB是开源的
但是当然不排除若干年后oracle再花几十亿美金收买mysql之父
3. 搭建实验环境
本次数据库实验,我们采用desktop虚拟机
- 为了保证一个纯净的实验环境,最好先将虚拟机reset
- 修改主机名为mysql
hostnamectl set-hostname mysql.westos.com
- 配置网络
采用图形配置的方式或修改配置文件的方式将desktop虚拟机的网络设置为静态ip,将ip设置为172.25.254.114
4.查看yum源是否已经配置好
cd /etc/yum.repos.d/
ls
将yum源配置好
yum repolist 能列出东西
4. 安装和登陆mariadb数据库的服务软件
4.1 安装mariadb数据库的服务软件
yum search mariadb
#寻找这个软件
安装mariadb-server并且开启mariadb服务
切到/var/lib/mysql目录,可以看到有一个mysql.sock文件,这个套接字文件就是程序的入口
直接输入mysql进入数据库进行操作,SHOW DATABASES;
可以查看所有已经存在的数据库,test是用来测试的一个数据库,在初始化的时候可以将这个数据库删除
安全初始化
刚刚安装好的mariadb的初始状态的信息设定很不安全,需要重新设定
mysql_secure_installation数据库安全初始化脚本,给定root用户以及密码
设定超级用户的密码
按回车键,禁止匿名用户登陆数据库
按回车键,禁止远程用户登录数据库
按回车键,移除测试的数据库,
按回车键,重新加载数据表的权限,并且进入数据库
初始化完毕之后,就可以登陆数据库了
4.2 登陆mariadb数据库
mysql -uroot -pwestos
#这样可以登陆数据库,但直接将密码显示在屏幕上很不安全
mysql -uroot -p
#直接输入刚才设置的密码就可以登陆数据库了
4.3 mariadb数据库的安全设置
默认情况下,数据库的网络接口3306是打开的,这样,别人可以从这个端口进来查看我的数据库,为了安全需要关闭此接口
netstat -antlupe | grep mysql
#查看数据库的网络接口是否开启
关闭网络接口
vim /etc/my.cnf
skip-networking=1
#关闭网络接口3306,跳过网络接口
systemctl restart mariadb
#重启数据库
netstat -antlupe | grep mysql
#查看数据库的网络接口是否已经关闭
任何信息都没有,表示数据库3306端口已经关闭
5. 数据库的管理
注:数据库的每行命令都以分号(;)结尾,如果忘记输入;直接回车,数据库会默认你没输入完毕,自动将多行合并为一行,直到遇见分号
5.1 数据库的查询
mysql -uroot -p 先以一个用户身份进入数据库
SHOW DATABASES;查看都有哪些数据库(可以看到存在的数据库的名称)
USE DATABASENAME(刚刚查看出来的);进入指定的一个数据库
SHOW TABLES;查看该数据库中有哪些表格
SELECT * FROM TABLENAME; (查看该表格中的所有内容,如果太多的话可以选择自己想要查看的内容)
SELECT Host,User (列:字段条件) FROM user(表格名字) WHERE User='root'(行条件);(相当于条件查询)
mysql -uroot -predhat -e “SHOW DATABASES; #数据库的基本管理
进入数据库,显示数据库信息
进入mysql数据库
查看mysql数据库中的数据表信息
查看plugin表中的所有信息
查看user表中的所有内容,由于表头较大,一个屏幕无法显示全部,所以会出现下图的画面
查看指定用户的主机,用户字段
查看用户的主机,用户和是否有选中的权限信息
超级用户以本地用户的身份登陆数据库是否有选择的权限
以超级用户身份登陆,查看存在的数据库
5.2 数据库的建立
mysql -uroot -p 以超级用户身份进入数据库
SHOW DATABASES; ##列出存在的库
CREATE DATABASE westos(库名字); ##建立新的库
USE westos; ##进入新建立的这个库
CREATE TABLE linux ( ##在这个库里面建立表
-> username varchar(字符长度为10) NOT NULL,用户登陆的时候名字和密码不能为空
-> password varchar(字符长度为50) NOT NULL
-> );以分号这个结尾
DESC linux; ##查看新表的结构
INSERT INTO linux(表格名字) VALUES ('wsp','123');#插入的信息符号必须是英文字符#插入数据到linux表中
SELECT * FROM linux; ##查询所有字段在linux表中
SELECT username,password from linux; ##查询指定字段(用户名和密码)在linux表中
CREATE DATABASE westos(库名字); ##建立新的库
SHOW DATABASES; ##列出存在的库
USE westos; ##进入新建立的这个库
CREATE TABLE linux ( ##在这个库里面建立表
-> username varchar(字符长度为10) NOT NULL,用户登陆的时候名字和密码不能为空
-> password varchar(字符长度为50) NOT NULL
-> );
DESC linux; ##查看新表的结构
INSERT INTO linux(表格名字) VALUES (‘wsp’,‘123’);#插入的信息符号必须是英文字符#插入数据到linux表中
SELECT * FROM linux; ##查询所有字段在linux表中
SELECT username,password from linux; ##查询指定字段(用户名和密码)在linux表中
5.3 数据库信息的更改
数据库的名字不能随便更改(涉及到数据库之间的关联查找)
数据库也是以目录下文件的形式存在的
在目录下,也可以直接改数据库的名字,但是不安全
ALTER TABLE linux ADD class varchar(10);在表格里面添加列
ALTER TABLE linux ADD age varchar(4) AFTER password;添加列的时候指定位置(不能在最前面,没有参照物的话会造成数据丢失) 添加字段在password前
ALTER TABLE linux DROP age;在表格里面删除这个列
ALTER TABLE linux RENAME user;重命名表
UPDATE user SET class='linux' where username='wsp' AND password='123';更新值
在表格里面添加列
添加字段在password前
查看westos数据库中存在的表
查看user表内容
在表格里面删除这个age列
给linux表重命名为user
更新值
SELECT * FROM user;
INSERT INTO user VALUES(‘wsp1’, '456', 'python');
SELECT * FROM user;
5.4 数据库的删除
DELETE FROM user WHERE username=‘wsp’;
SELECT * FROM user;
SHOW TABLES
删除user表
查看表内容为空
删除westos数据库,可以看到已经没有自己建立的数据库了
5.5 数据库用户授权(不能所有的都在本地root下面)
登陆数据库
CREATE USER westos@localhost identified by 'westos' ;
#创建用户
SELECT * FROM mysql.user;
GRANT SELECT ON userdata.* TO westos@localhost;
#授权SELECT操作
FLUSH PRIVILEGES;
#刷新数据库所有的东西
查看用户授权信息已经包含select
给用户授权插入
查看用户授权信息包括select和insert
方法二:GRANT SELECT ON userdata..* TO westos@localhost IDENTIFIED BY 'wsp';
REVOKE SELECT ON userdata.* FROM westos@localhost;
#撤销授权
5.6 数据库的备份与恢复
mysqldump -uroot -pwestos westos > /mnt/wesots.sql(完全备份westos这个库)
mysqldump -uroot -pwestos westos --no-data(备份westos这个库的表格形式,不包括数据)
mysqldump -uroot -pwestos --all-database(完全备份所有的库)
mysqldump -uroot -pwestos --all-database --no-data(备份所有的库不要数据)
恢复方式1
mysql -uroot -predhat -e "CREATE DATABASE userdata";
先创建userdata这个库
mysql -uroot -predhat userdata < /mnt/userdata.sql;
再将刚才备份的数据库还原回去
创建一个数据库userdata
进入userdata数据库
建立一个表usertab
查看表内容
给表中插入值
查看表内容
以root用户身份登陆数据库查看数据库
将数据库备份到/mnt/userdata.sql
删除userdata数据库
查看数据库信息,此时已经没有userdata数据库
创建一个数据库名称为userdata
数据库的配置文件里21、 22 行为空,不需要要有创建数据库和进入数据库的语句
将备份的数据库文件再重定向回userdata
查看数据库信息,发现userdata数据库已经恢复
查看usertab数据表,里边添加的值还在,可见数据库已经完全恢复
恢复方式2
vim /mnt/userdata.sql 直接在备份的数据库的文件里面写要恢复的库的信息
写入这两行内容:
CREATE DATABASE userdata;
USE userdata;
mysql -uroot -predhat < /mnt/userdata.sql直接还原恢复数据库
将数据库备份到/mnt/userdata.sql
删除userdata数据库
查看数据库
在数据库的配置文件中加入建立数据库的命令
将备份的数据库内容恢复
查看数据库
查看表内容,说明已经完全恢复
5.7 数据库的管理密码问题
当知道数据库的密码的时候,直接改:
mysqladmin -uroot -predhat password westos
#将超级用户的密码从redhat改为westos
当不知道数据库的密码的时候,关闭端口,跳过安全检测,修改密码:
systemctl stop mariadb #先关闭数据库服务
mysqld_safe --skip-grant-tables & #将安全检测进程打入后台
mysql 登陆数据库
update mysql.user set Password=password('redhat') where User='root';改数据库的密码
将安全检测进程打入后台
跳过安全检测不需要密码,直接登录数据库
重置密码
可以看到,密码是被加密过的字符串,比明文加密更安全
如果不结束那些进程的话,直接重启,mysql可以登陆,设置的密码无效
开启mariadb数据库服务,用新设置的密码登陆,可以看到登陆成功
5.8 安装phpadmin数据库图形管理软件
下载phpMyAdmin-3.4.0-all-languages.bz2
yum install httpd -y
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
systemctl start httpd
systemctl enable httpd
使用yum源安装httpd服务
给火墙永久添加http服务
重启http服务并设置为开机自启
tar jxf phpMyAdmin-3.4.0-all-languages.bz2
#解压安装包
cd /var/www/html #下载httpd服务之后才会有这个目录mv phpMyAdmin-3.4.0-all-languages phpMyAdmin
#重命名
yum install -y php
#安装php服务
systemctl restart httpd
#重启http服务
yum install -y php-mysql
#安装php-mysql服务yum install -y php-mbstring-5.4.16-21.el7.x86_64.rpm
#安装好会在网页上显示缺少这个扩展,所以再安装一下这个软件包
systemctl restart httpd
#重启http服务
测试:在desktop虚拟机的浏览器里面输入http://172.25.254.114/phpMyAdmin看是否有数据库图形化管理工具
语言如果选择中文,那么将会出现中文操作界面,用户为root,密码为redhat
在这里新建的数据库等信息可以在shell中SHOW DATABASES看到
新建一个名称为haha的数据库
这里可以看到新建的数据库“haha”