1 数据库mariadb的基本介绍
1.1 什么是DB?
DB的全称是data base,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作;
其实,数据库通常包含一个或多个表组成。如果你用过Excel,就会知道Excel是一张一张的二维表。每个表都是由列和行组成的,其中每一列都用名字来标识出来。同样的,数据库里存放的也是一张一张的表,只不过各个表之间是有联系的。
所以,简单来说:数据库=多张表+各表之间的关系其实数据库是逻辑上的概念,它是一堆互相关联的数据,放在物理实体上,是一堆写在磁盘上的文件,文件中有数据。这些最基础的数据组成了表(table)。
数据库中每个表由一个名字标识。表包含带有列名的列(字段),和记录数据的行。
1.2 DB的分类?
关系型数据库: 经过数学理论验证 可以保存现实生活中的各种关系数据, 数据库中存储数据以表为单位;
非关系型数据库:通常用来解决某些特定的需求如:数据缓存,高并发访问。 存储数据的形式有多种,举例:Redis数据库:通过键值对的形式存储数据;
1.3 什么是MariaDB?
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
2 数据库mariadb的下载与初始化设定
2.1 mariadb的下载
我们使用虚拟机desktop充当mariadb服务服务器
yum search mariadb 寻找提供mariadb服务端的软件
yum install mariadb-server -y 下载mariadb服务端的软件
systemctl start mariadb 开启数据库服务
hostnamectl set-hostname mysql.westos.com 为便于区别,修改主机名
2.2 安全初始化
1)默认情况下,数据库的网络接口是打开的 ,netstat -antlupe | grep mysql 会发现开放了一个 3306的网络接口,为了安全需要关闭此接口。
netstat -antlupe | grep mysql
vim /etc/my.cnf
skip-networking=1 不能乱写,写在[mysqld_safe]上面一行
systemctl restart mariadb
2) 数据库起始状态设定信息是不安全的,不需要密码即可登陆,需要做以下设定;
mysql_secure_installation
Enter current passwd for root(enter for none): 之前没有密码,直接回车
set root password [y]重新设定密码
remove anonymous users [y]移除匿名用户
Disallow root login remotely [y]关闭超级用户远程登陆
Remove test database and access to it? [y]是否删除测试库
reload privilege tables now? [y]数据库设定已经更改,是否要刷新数据库设定
效果:需要密码才能登陆
mysql -uroot -pwestos 这种方式输入密码会显示,不安全
mysql -uroot -p 以这种方式登陆密码不会回显,安全
3 数据库mariadb的管理
3.1 查询库和表
数据库mariadb的最大组成单位是库,库又是由表组成。
表由记录数据的行和列(字段)组成
SHOW DATABASES; 查询包含的库
USE DATABASENAME;(USE mysql;) 进入一个库中,进入mysql库中
SHOW TABLES; 查询库中的表,列出所有的表名
SELECT * FROM TABLE; 在特定的表中查询所有字段
SELECT Host Form user; 在特定的表user中查询Host字段
SELECT Host Form user WHERE User='root'; 找出user表中所有User='root'的行,并且显示该行的Host
3.2 建立库和表
SHOW DATABASES; #列出库
CREATE DATABASE westos; #建立库
USE westos; #进入westos库
CREATE TABLE linux ( #建立表
-> username varchar(50) not null, #要求输入不能为空,后面的逗号不能少。
-> password varchar(50)(字符长度最大50) not null
-> );
DESC linux; #查看表结构(表中的所有字段)
INSERT INTO linux VALUES ('lee','123'); #插入数据到linux表中
SELECT * FROM linux; #查询所有字段在linux表中
SELECT username FROM linux; #查询指定字段在linux表中
注1:varchar(5) 不定长字符,可输入1,12,123,1234,12345
char 定长字符,若长度不够则会在后面自动补空格
注2:在建立表的时候,( username varchar(50) not null, password varchar(50) not null;
也可以将这三行写到一行中,但不便于检查错误,所以分开来写,每个字段占一行
3.3 更改表
UPDATE linux SET pssword=password('lee') WHERE username='lee'; #重新使用password加密方式加密lee用户的密码
ALTER TABLE linux ADD class varchar(20); #默认在linux表中最后一列加入class字段
ALTER TABLE linux DROP class; # 丢弃class字段
ALTER TABLE linux ADD age varchar(20) AFTER password; #在password后面加入age字段
UPDATE linux SET age='15' WHERE username='lee'; #若不加where条件,所有用户的age都会设定为15
ALTER TABLE linux RENAME redhat; #重新将表linux命名为redhat
3.4 删除表中数据及表和库
DELETE FROM redhat WHERE username='lee'; #指定一个条件,username=lee
DELETE FROM redhat WHERE username='lee' or username='lee1'; #同一个条件下,删除多个目标。满足其中一个条件的都会被删除
DELECT FROM redhat WHERE username='lee' and age='12' #指定不同条件,同时满足两个条件的才会被删除
DELECT FROM redhat WHERE username='lee' or age='12' #指定不同条件,满足其中一个条件的都会被删除
DROP TABLE userlist1; #(已经在westos库中)在特定的库中丢弃表userlist1
DROP DATABASE westos;
3.5 用户授权
1.用户的建立
CREATE USER lee@'localhost' identified by 'westos'; #用户的建立,lee只能在本机登陆,密码为westos
CREATE USER lee@'%' identified by 'westos'; #用户的建立 lee可以远程登陆登陆 密码为westos,和上条命令创建的是不同用户
SELECT * FROM mysql.user #查看数据库中的用户信息
2.用户的授权,可以授权的权力有SELECT,INSERT,CREATE,DROP,DELETE,ALTER,UPDATE
GRANT SELECT,INSERT on westos.* TO lee@localhost; #给lee用户开放select,insert权力
SHOW GRANTS FOR lee@localhost; #查看用户lee的权力
REVOKE INSERT ON westos.* FROM lee@localhost; #收回lee用户的insert权力
DROP USER lee@localhost #删除用户lee
FLUSH PRIVILEGES; #如果语句没有生效,刷新
3.创建的可以远程登陆的用户如何登陆:
在server虚拟机中:
yum whatprovides */mysql
yum install mariadb-5.5.52-1.el7.x86_64 #名字可能略有不同
将数据库服务端的3306端口打开,将vim /etc/my.cnf
删掉语句skip-networking=1
systemctl restart mariadb
systemctl stop firewalld
在server虚拟机中mysql -ulee -h172.25.254.133 -pwestos #检查能否登陆
1.用户的建立
2.用户的授权
3.创建的可以远程登陆的用户如何登陆:
3.6 用户授权
数据库备份
mysqldump -uroot -pwestos westos > /mnt/westos.sql #将westos数据库备份到/mnt目录下的westos.sql
mysqldump -uroot -pwestos westos --no-data #只备份数据库westos的结构(有哪些字段),不备份数据
mysqldump -uroot -pwestos --all-database #备份所有数据库
mysqldump -uroot -pwestos --all-database --no-data #备份所有数据库的结构,不备份结构
恢复方式1:
mysql -uroot -p -e "CREATE DATABASE westos;"
mysql -uroot -pwestos westos < /mnt/westos.sql
恢复方式2:
vim /mnt/westos.sql
加入语句:CREATE DATABASE westos;
USE westos;
mysql -uroot -pwestos < /mnt/westos.sql
3.7 超级用户的密码管理
情况一:
当知道超级用户原始密码时,超户密码的修改:
mysqladmin -uroot -pwestos password lee #将用户root的密码改为lee
情况二:
当超级用户密码忘记时,重新设定超户的密码:
第一步:systemctl stop mariadb
第二步:mysqld_safe --skip-grant-tables &
第三步:mysql
update mysql.user set Password='westos' WHERE User='root' 密码会是明文,不安全
update mysql.user set Password=password('westos') where User='root'; 将密码加密了
第四步:fg
killall -9 mysqld_safe
ps aux | grep mysql
kill -9 mysql的所有进程id
第五步:systemctl start mariadb
4 phpmyadmin 数据库图形管理
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。
phpmyadmin:可以用图形创建数据库表
1.下载phpMyAdmin-3.4.0-all-languages
2.yum install httpd php php-mysql -y
3.systemctl restart httpd
4.tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 ----> /var/www/html
5.mv phpMyAdmin-3.4.0-all-languages mysqladmin
6.cd mysqladmin
7.cp config.sample.inc.php config.inc.php
8.vim config.inc.php
$cfg 'blowfish_secret']='ba17c1ec07d65003'; 这串字符在Documentation.txt文件中
9. systemctl stop firewalld
测试:
http://172.25.254.172/mysqladmin
我们上面介绍的命令,比如建表,删表,增加数据等等,所有的功能都可以利用phpmyadmin图形管理完成,相当方便。