您的位置:首页 > 数据库 > MariaDB

Linux学习笔记----mariadb数据库管理

2019-05-24 02:19 1141 查看

数据库

  • 可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作
  • 是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合

数据库类型

数据库有两种类型,分别是关系型数据库与非关系型数据库

关系型数据库主要有:

Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等等。
非关系型数据库主要有:
NoSql、Cloudant、MongoDb、redis、HBase等等

mySQL (关系型数据库管理系统)

  1. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
  2. MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  3. MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
  4. 由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。

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的名字。

安装MariaDB

yum search mariadb
yum install mariadb-server.x86_64 -y
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb


MariaDB安全初始化

  • 数据库起始状态的设定信息是不安全的,任何用户都可以登陆而不需要输密码,所以我们需要作以下设定:
mysql_secure_installation     						安全初始化

Enter current password for root (enter for none):   刚下载的mariadb超户是没有密码的,且默认登陆的用户就是超户,所以直接回车
Set root password? [Y/n]            				是否为超户设置密码
New password:                      				    输入你设置的密码
Re-enter new password:              				再次输入你设置的密码
Remove anonymous users? [Y/n]       				是否移走匿名用户
Disallow root login remotely? [Y/n]                 不允许超户远程登陆
Remove test database and access to it? [Y/n]        删掉测试的数据库
Reload privilege tables now? [Y/n]                  对数据库刷新,让所有的数据同步



设置完成后尝试用密码去登录MariaDB

  • 默认情况下,数据库的网络接口是打开的
    为了安全需要关闭此接口
  • 或者编辑配置文件/etc/my.cnf(vim /etc/my.cnf)写入skip-networking=1关闭网络接口
  • 重启服务systemctl restart mariadb,再次查看mysql的端口3306就没有了

数据库的管理

查询

SHOW DATABASES;         查询数据库

USE mysql;      	  进入mysql数据库
SHOW TABLES;          查询mysql的所有表

SELECT * FROM user;		               查询user表里的字段

SELECT Host,User,Password FROM user;   查询user表里Host,User,Password字段

SELECT Host,User,Password FROM user where Host='127.0.0.1';查询user表里Host,User,Password字段对应的行

建立

CREATE DATABASE westos;    	创建一个新的的数据库westos
SHOW DATABASES;         	查询数据库是否添加成功

CREATE TABLE userlist(		     		  建立表
-> username varchar(50) not null,     username数据最长为50个字符,且不能为空
-> password varchar(100) not null     password数据最长为100个字符,且不能为空
-> );
DESC  userlist;      					  查看表结构

varchar是可变长字符串,它与char的区别是
1.占据空间不同:char的长度是不可变的,而varchar的长度是可变的;
2、存取速度不同:char的存取数度比varchar要快得多,因为其长度固定,方便程序的存储与查找;
3、存储方式不同:char的存储方式是对英文字符占用1个字节,对汉字占用两个字节,而varchar的存储方式是对每个英文字符占用2个字节,汉字也占用2个字节;

INSERT INTO userlist VALUES ('shen','123');		    插入数据到userlist表中
INSERT INTO userlist VALUES ('shen','456');		    插入数据到userlist表中
SELECT * FROM userlist;								查询所有字段在userlist表中

更改

ALTER TABLE userlist RENAME user_list;   把userlist表名改为user_list
ALTER TABLE user_list RENAME userlist;   把表名再改回来


ALTER TABLE userlist ADD age varchar(5); 向表userlist中增加age列

ALTER TABLE userlist DROP age;  		删除表中的age列

ALTER TABLE userlist ADD age varchar(5) AFTER username;    	向username后加入age列

UPDATE userlist SET age='12';    	把表中所有的age列的值改为12

UPDATE userlist SET age='15' WHERE username='shen1';   把表中username是shen1的列的age值改为15

INSERT INTO userlist VALUES('shen1','15','456');       插入一个新用户shen1

删除

DELETE FROM userlist WHERE username=‘’shen’     删除表中username是shen的行

DELETE FROM userlist WHERE username=‘’shen’ AND age='12'     删除表中username是shen且age为12的行

DELETE FROM userlist WHERE username=(‘shen’|'shen1');      删除表中username是shen和shen1的行

DROP TABLE userlist;   		删表

DROP DATABASE westos;       删库

用户授权

首先关闭防火墙,取消掉之前修改的配置并开放端口3306,让其他主机可以通过网络登陆数据库


CREATE USER westos@'%' identified by 'westos';      创建一个用户,密码为westos并且可以在任何地方可以登陆数据库
SELECT User,Host FROM mysql.user;
CREATE USER lee@localhost identified by 'westos';      创建一个用户名为lee,用户密码为westos的用户,只能在本地登陆数据库
SELECT User,Host FROM mysql.user;




测试:分别在本机用lee用户和其他主机用westos用户测试:
其他主机同样需要安装mariadb,安装完后开启服务systemctl start mariadb.service
这是没有授权的情况:



这是授权之后的情况:

GRANT SELECT,INSERT,DELETE on westos.* TO westos@‘%s’; 授westos库的权利给其他用户
GRANT SELECT,INSERT,DELETE on mysql.* TO westos@‘%s’; 授mysql库的权利给其他用户
SHOW GRANTS FOR westos@‘%s’;  显示其他用户所拥有的权利

数据库系统和文件系统一样,都是需要授权的,此时我们给两个用户都没有赋予权力,所以他们只能登陆,且只能看他能看到部分可见的数据库,我们需要root给他们赋予权力他们才能进行其他增删改查操作。
超级用户一次可以授予多个权力,用逗号,分开就行。




此时用其他用户登陆查看数据库,可以显示mysql和westos两个数据库
FLUSH PRIVILEGES; 刷新

数据库的备份

数据库文件所在目录是/var/lib/mysql

mysqldump -uroot -pwestos westos > /mnt/wesots.sql      将数据库westos备份到/mnt下
mysqldump -uroot -pwestos westos  --no-data	 将数据库westos备份,不备份数据只备份表的结构
mysqldump -uroot -p --all-databases     	 备份所有数据库
mysqldump -uroot -p --all-databases  --no-data   备份所有数据库的表的结构


恢复方式1:

mysql -uroot -p -e "CREATE DATABASE westos;"    	 先创建数据库
mysql -uroot -p westos < /mnt/westos.sql    		 再把备份的导入


恢复方式2:

vim /mnt/westos.sql
在中间写入
CREATE DATABASE westos;
USE westos;
mysql -uroot -p < /mnt/westos.sql



恢复成功!

修改数据库超级用户的密码

知道原密码时

mysqladmin -uroot -pwestos password redhat    将原密码westos改为redhat
mysql -uroot -predhat     					  用新密码登陆测试


忘记原密码时:
1.首先,关闭数据库服务

systemctl stop mariadb.service

2.开启安全模式,跳过授权表 ,因为会占用终端所以加&打入后台运行。

mysqld_safe --skip-grant-tables &

3.此时任何用户都可以直接输入mysql登陆而不用密码

4.我们输入mysql后,在mysql数据库的user表中修改root的密码

5.结束所有进程,再开启数据库服务systemctl start mariadb.service


此时用mysql不能直接登陆数据库

安装phpmyadmin 数据库图形管理

 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。
首先安装httpd服务,开启服务并设置为开机启动:

yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service

获得phpmyadmin的压缩包,并把phpmyadmin的安装包在/var/www/html目录下解压,并解包,我们可以重命名为mysqladmin方便在浏览器下访问。

yum install lftp -y
tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2   	解压并解包
mv phpMyAdmin-3.4.0-all-languages/ mysqladmin   	重命名

安装php,php-mysql两个包,此时可以通过php -m 命令查看mysql有没有出现,这表示已经运行php加载的模块。

yum search php
yum install php.x86_64  -y
yum install php-mysql.x86_64 -y
php -m

vim Documentation.txt并cp config.sample.inc.php config.inc.php,并将Documentation.txt中139行中的cookie的几个字符ba17c1ec07d65003添加到config.inc.php文件中,重启httpd服务systemctl restart httpd.service




此时,在浏览器中输入172.25.60.100/mysqladmin就可以访问了,建库,建表。在shell端可以检测

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: