数据库概述
存储数据的仓库,简称数仓
数据库服务器就是有很大硬盘空间存储数据的服务器
我们的数据主要包括微信聊天记录 购物网站记录了等等
数据的种类有 :视频 图片 音频 文字
常见的数据库开源软件
Mysql Redis Memcached MongoDB
mysql介绍
发展历史
最早属于瑞典的MySql AB公司
2008年1月,MySql AB 被 Sun收购
2009年4月,Sun被Oracle收购
特点
应用广泛的开源数据库软件
适用于中小规模、关系型数据库系统(RDBMS)
支持linux UNIX Windows等多种操作系统
支持Python java perl php等编程语言
应用场景
LAMP 与Apache连用
LNMP 与 Nginx连用
主要目录
废话结束开始安装
下载地址
https://downloads.mysql.com/archives/community/
从这个地址去下载你想要的版本,我用的是5.7.17
开始安装
准备工作关闭firewalld
禁用selinxu
配置本地yum源
将你下载的拷贝到你的服务器上root家目录
tar -xf mysql-5.7.17.tar
yum -y install mysql-community-*.rpm
systemctl start mysqld 启动服务
systemctl enable mysqld 设置开机运行
ss -utnlp | grep 3306 查看端口号
ps -C mysqld 查看进程
初始化密码
查看服务初始密码
grep password /var/log/mysqld.log
mysql -uroot -p'上面查出来的最后面那些都复制到这里'
然后你就进去了
密码更改----适用于刚安装
修改登录密码
alter user root@"localhost" identified by "新密码";
exit;
使用修改的密码登录
mysql -uroot -p你刚才设置的新密码
show databases; 查看已有的库(默认的4个库)
mysqld服务相关参数
/etc/my.cnf | 主配置文件 |
/var/lib/mysql | 数据库目录 |
MySQL服务默认端口号 | 3306 |
/var/log/mysqld.log | 日志文件,初始密码就在这 |
数据库服务进程名 | mysqld |
基本操作
show databases; 查看已有库
select user(); 显示登录用户名和客户端地址
select version(); 查看MySQL软件版本号
select database(); 显示当前所在的库(类似系统命令pwd的功能)
use sys; 进入到sys库里( 类似系统命令cd)
show tables; 显示库下已有的表 (表,用来存数据的文件 )
exit; 断开连接(退回到系统命令行)
密码管理
第一种破解方法,需要重启数据库服务
此种方法适合破解线下数据库服务器管理员root密码
修改主配置文件
echo skip-grant-tables >> /etc/my.cnf #跳过授权实现无密码登录
systemctl restart mysqld
mysql
mysql> update mysql.user set authentication_string=password("xxxxx")
where user="root" and host="localhost";
mysql> flush privileges; #确保修改生效
mysql> select host,user,authentication_string from mysql.user
where user="root" and host="localhost"; #查看数据库root本机登录密码(密码是加密后保存的)
删主配置文件里添加的行并重启服务
systemctl restart mysqld
现在你能用新密码登录了
第二种破解方法,不需要重启数据库服务
工作中线上服务器是不能随便重启的
适合破解线上数据库服务器管理员root 密码
scp -r 192.168.88.51:/var/lib/mysql/mysql /var/lib/mysql/ 拷贝另一台机器的数据库目录
查看mysqld服务父进程PID号
pstree -p | grep mysqld | head -1 #没有pstree命令的话 安装 psmisc软件
kill -SIGHUP 你查到的PID号
用拷贝的密码登录
修改root密码
登陆后修改
alter user root@”localhost” identified by "123qqq…A";
登陆前修改
mysqladmin
mysqladmin -uroot -p旧密码 password "新密码" #明文修改
mysqladmin -uroot -p password #密文修改
一遍旧密码 两遍新密码
安装mysql服务图形化管理工具
PhpMyAdmin
官网地址https://www.phpmyadmin.net/
安装
先把下载下来的解压
yum install -y httpd php php-mysql
mv 解压的目录 /var/www/html
cp /var/www/html/解压的目录/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php
vim +17 var/www/html/phpmyadmin/config.inc.php #写入123到''随便写得
访问网页即可 http://ip/解压的目录
输入mysql 用户名密码即可
SQL结构化查询语句
\c,ctrl+c可以结束
\G改变显示方式,也代表结束;
不区分大小写(命令),密码变量除外
可以分行写
mysql -uroot -pxxxx < xxx.sql导入
DQL 查询,不对数据做本身的修改 | select |
DDL 结构定义,对象定义 | alter create drop |
DML 对数据的编译 | insert update delete |
DCL 权限 | grant |
select命令格式
查看表里的所有行
select 表头名列表 from 库名.表名;
仅查看与条件匹配的行
select 表头名列表 from 库名.表名 where 查询条件 ;
筛选条件的使用
数据比较
符号 = != > >= < <=
select id,name,uid,gid from tarena.user where id != 3;
字符比较
符号两边必须是字符 或字符类型的表头
= 相等比较
!= 不相等比较
select name , shell from tarena.user where shell != "/bin/bash";
空和非空
只有null表示空 NULL
空 is null 表头下没有数据
非空 is not null 表头下有数据
mysql> insert into tarena.user(id,name) values(72,"null"); 普通字母
mysql> insert into tarena.user(id,name) values(73,NULL); 表示空
mysql> insert into tarena.user(id,name) values(74,null); 表示空
范围匹配条件
in 在…里
not in 不在…里
between 数字1 and 数字2 在…之间
mysql> select name , uid from tarena.user where uid in (10 , 20 , 30 , 50);
mysql> select id, name,uid from tarena.user where id between 10 and 20 ;
模糊匹配
通配符
_ 表示 1个字符 ?
% 表示零个或多个字符 *
mysql> select name from tarena.user where name like "_ _ _";
mysql> select name from tarena.user where name like "a%";
mysql> select name from tarena.user where name like "%_ _ _ _%";(没有空格挨着敲)
正则匹配
格式: select 字段名列表 from 库名.表名 where 字段名 regexp '正则表达式';
^ 匹配行首
$ 匹配行尾
[] 匹配范围内任意一个
* 前边的表达式出现零次或多次
| 或者
. 任意一个字符
select name from tarena.user where name regexp "[0-9]";
提高优先级()
作用:改变执行顺序
select (2 + 3) * 5; 先计算加法 再计算乘法
逻辑匹配 多个判断条件
逻辑与 and && 多个判断条件必须同时成立
逻辑或 or || 多个判断条件其中某个条件成立即可
逻辑非 not ! 取反
select name , uid from tarena.user where (name = "root" or name = "bin") and uid = 1 ;
定义别名使用 as 或 空格
select name as 用户名 , homedir 家目录 from tarena.user;
数据拼接 concat()
select concat(name , "-" , uid , "-" , gid) as 用户信息 from tarena.user;
去重显示 distinct 字段名列表
select distinct shell from tarena.user; 去重
select 命令其他用法演示
select "abc" as 字母; #可以输出文字数字字母
select (1+2) 结果是:; #可以输出计算结果
select 可以输出函数的值
查看mysql变量
show variables; 查看所有session变量
show global variables; 查看所有global变量
select @@version; 查看指定变量的值
select now(); 输出当前时间
修改密码策略
show variables like "%password%";查看策略
set global validate_password_policy=0;修改密码策略
set global validate_password_length=6;修改密码最小长度
永久修改vim /etc/my.cnf在mysql下追加
validate_password_policy=0
validate_password_length=6
:wq
你需要知道
1 简述当前主流RDBMS软件有哪些?开源且跨平台的数据库软件有哪些?
Oracle 、 DB2 、 SQL SERVER 、MySQL 等 ,其中只有MySQL是既开源又跨平台的数据库服务软件。
2 简述MySQL数据库的服务进程名、默认端口、默认数据库目录?
mysqld 3306 /var/lib/mysql
3 简述MySQL默认的4个库叫什么名字?哪个库里的数据不占用物理磁盘空间?
sys myasql information_schema performance_schema
information_schema库不占用物理磁盘空间。