数据库
数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。它具有整体性、共享性。
简单的讲,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的。
常见的数据库有mysql 、SQL Server、Oracle、Sybase、DB2等,而最受人们欢迎的当然是mysql了,MySQL是目前最受欢迎开源的SQL数据库管理系统,与其他的大型数据库Oracle、DB2、SQL Server等相比,MySQL虽然有它的不足之处,但丝毫也没有减少它受欢迎的程度。对于个人或中小型企业来说,MySQL的功能已经够用了, MySQ L又是开源软件,因此没有必要花大精力和大价钱去使用大型付费数据库管理系统。
我们今天学习的Mariadb其实就是Mysql的衍生物
MariaDB数据库
MariaDB数据库管理系统是Mysql的一个分支,主要由开源社区在维护,采用GPL授权许可,MariaDB的目的是完全兼容Mysql,包括API和命令行,是Mysql的替代品。
有趣的是MariaDB的名称来自于Mysql的创始人Michael Widenius的女儿Maria的名字
那么接下来我们所说的数据库就默认为MariaDB了
安装mariadb并安全初始化
1.安装并开启数据库
yum install mariadb-server.x86_64 -y ##注:一定要加server
2.安全初始化
1)查询mysql开放端口netstat -antlupe | grep mysql
2)关闭所有端口
vim /etc/my.cnf
10 skip-networking=1
3)再次查询
4)mysql_secure_installation(mariadb自带的安全出初始化脚本)进行安全设定,设定密码,第二个设定密码后,其他全部回车默认
3.登陆
mysql -uroot -p
或者 mysql-uroot -predhat ##直接输入密码,这里的redhat时我自己设定的密码
数据库的管理
行 | 对象 |
列 | 属性 |
表头 | 字段 |
数据库的查询:
SHOW DATABASES; ##列出库
USE xxx; ##进入库
SHOW TABLES; ##列出表
DESC xxx ##查看表结构
SELECT * FROM xxx ##查询所有字段在xxx表中
SELECT xx,zz FROM xxx ##查询xx,zz字段在xxx表中
要注意的是mysql中的命令行都要家“;”
数据库的建立:
CREATE TABLE linux ( ##建立表linux
->username varchar(10) not null, ##字段username,可变长字符,不超过10位,且不能为空
->password varchar(10) not null ##字段password,。。。。。。。。。。。。。。。。。
->);
INSERT INTO linux VALUES ('LJZ','123'); ##向linux表中插入值(数据)。。。
数据库的更改
数据库的名称可以直接更改数据库的名称(shell中),但可能出现数据丢失,不建议,若要更改则备份重建数据库
ALTER TABLE linux RENAME redhat; ##更改表的名称
ALTER TABLE linux ADD class varchar(20); ##加入一个class字段,长度为20
ALTER TABLE linux DROP class; ##删除class字段
ALTER TABLE linux ADD class varchar(20) AFTER username;
##在字段username后加入字段class ,注意新加入的不能再第一个,第一个是基准
UPDATE linux SET class='01'; ##更新class字段的数据,这样不做定位的话就是全部
UPDATE linux SET class='02' WHERE username='PP'; ##更改usernaem的PP对象所在的class字段属性
在这里我们还将表名换回linux
数据库的删除
DROP DATABASE STUDY; ##删除库
DROP TABLE linux; DROP TABLE STUDY.linux; ##删除表
DELETE FROM linux WHERE username='LJZ'; ##删除LJZ对象
数据库的备份与恢复
mysqldump -uroot -predhat ljz > /mnt/ljz.sql ##备份库并导入到/mnt下
mysqldump -uroot -predhat ljz --no-data ##备份ljz库 但不备份数据,只要框架
mysqldump -uroot -predhat --all-database ##备份所有的库
mysqldump -uroot -predhat --all-database --no-data ##备份所有库,但不备份数据
在一开始要建立一个ljz库u,在这里就不做具体操作了
恢复:
恢复方式一:建立库,再导入数据
mysql -uroot -predhat -e "CREATE DATABASE ljz;" ##-e为执行
mysql -uroot -predhat ljz < /mnt/ljz.sql
在一开始先删除库,然后再恢复
恢复方式二:自动建立库并进入库
vim /mnt/ljz.sql
22.CREATE DATABASE ljz;
23.USE ljz;
mysql -uroot -predhat < /mnt/ljz.sql
数据库命令的一些格式
例如:ljz.pp 为ljz库里的pp表
SELECT * FROM ljz.pp
可直接在shell命令行中加入-e执行命令
普通用户与授权
CREATE USER ljz@'localhost' identified by 'redhat'; ##创建一个用户并给密码;@localhost设置只能在本机登陆
GRANT SELECT,INSERT ON ljz.* TO ljz@localhost; ##将查看与插入权力给ljz
SHOW GRANTS FOR ljz@localhost; ##查看ljz的权力
REVOKE INSERT ON ljz.* FROM ljz@localhost; ##移除权力
DROP USER ljz@localhost; ##删除用户
SELECT User FROM mysql.user; ##查看mysql的用户
mariadb密码管理
已知密码改密码:
忘记密码改密码:
当忘记root密码后
systemctl stop mariadb ##关闭服务
mysqld_safe --skip-grant-tables & ##将mysql的一个安全脚本打入后台
回车
mysql ##进入mysql
UPDATE mysql.user SET Password=password('redhat') WHERE User='root';
##修改用户表中的密码,注:password()使密码为乱码
SELECT * FROM mysql.user; ##查询用户表的数据
quit ##退出mysql
ps aux | grep mysql ##查询mysql的进程id
kill -9 所有id ##强行关闭
systemctl start mariadb ##重启服务
登陆